r - 拆分字符串最后一个分隔符

标签 r string split delimiter

当我在 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/

相关文章:

r - 在 GGplot 中显示位于同一点的点的密度

java - java 是否将字符串定义为以 null 结尾?

python - 正则表达式或分割 (' ' )?

c# - 将二维数组拆分为包含新行的数组

r - 根据先前的值确定 data.table 列的边界

r - 在R中减去一个字符串

r - 从字符串中提取状态缩写和邮政编码

c - 将 {tempStr} 的内容移动到 Load Runner 中的 char str[]

C通用字符串编程

java - 获取特定字符串后的所有内容