当我在 R 中有不同数量的相同分隔符时,我需要帮助弄清楚如何根据最后一个分隔符在数据框的列中拆分字符串。例如,
col1 <- c('a', 'b', 'c')
col2 <- c('a_b', 'a_b_c', 'a_b_c_d')
df <- data.frame(cbind(col1, col2))
我想拆分 df$col2 以获得如下所示的数据框:
col1 <- c('a', 'b', 'c')
col2 <- c('a', 'a_b', 'a_b_c')
col3 <- c('b', 'c', 'd')
最佳答案
使用 stringi
包,你也可以实现你的目标。 stri_extract_last_regex()
提取您在模式中指定的最后一个元素。在这里,我说“获取字符串中的最后一个小写字母”。同样,您可以使用 stri_replace_last_regex()
修改 col2
.在这里我说“我想用空替换最后一个模式 _ 和一个小写字母。”即,我说“我要删除_和一个小写字母的最后一个模式”。
library(dplyr)
library(stringi)
df %>%
mutate(col3 = stri_extract_last_regex(str = col2, pattern = "[a-z]"),
col2 = stri_replace_last_regex(str = col2, pattern = "_[a-z]", replacement = ""))
# col1 col2 col3
#1 a a b
#2 b a_b c
#3 c a_b_c d
关于r - 拆分字符串最后一个分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41028681/