R 删除最后一个逗号之前的所有文本
具有如下数据帧:R 删除最后一个逗号之前的所有文本,r,R,具有如下数据帧: data.frame(id = c(1,2,3,4), text = c("text, another, end","not, keep","not, to keep, this","finally, chance, to, check")) 如何检测每行文本列中的最后一个逗号并删除之前的逗号 预期产出示例: data.frame(id = c(1,2,3,4), text = c("end","keep","this","check")) 使用sub,我们可以删除最后一个
data.frame(id = c(1,2,3,4), text = c("text, another, end","not, keep","not, to keep, this","finally, chance, to, check"))
如何检测每行文本列中的最后一个逗号并删除之前的逗号
预期产出示例:
data.frame(id = c(1,2,3,4), text = c("end","keep","this","check"))
使用
sub
,我们可以删除最后一个逗号之前(包括最后一个逗号)的所有内容,以及最后一个逗号后面可能出现的任何空白
df$text <- sub("^.*,\\s*", "", df$text)
df
id text
1 1 end
2 2 keep
3 3 this
4 4 check
df$text使用sub
,我们可以删除包括最后一个逗号在内的所有内容,以及最后一个逗号后面的任何空格
df$text <- sub("^.*,\\s*", "", df$text)
df
id text
1 1 end
2 2 keep
3 3 this
4 4 check
df$textregex本质上是默认贪婪的,因此实际上不需要找到最后一个逗号本身
sub('.*, ', '', df$text)
#[1] "end" "keep" "this" "check"
正则表达式本质上是默认贪婪的,所以实际上不需要找到最后一个逗号
sub('.*, ', '', df$text)
#[1] "end" "keep" "this" "check"
Base R,更详细,效率更低,无正则表达式:
df <- sapply(strsplit(as.character(df$text), ", "), function(x){x[length(x)]})
dfBase R,更详细,效率更低,没有正则表达式:
df <- sapply(strsplit(as.character(df$text), ", "), function(x){x[length(x)]})
df-Try:sub(“.*”,“,”,x$text)
sub(“.*”,“,”,df$text)
Try:sub(“.*”,“,”,x$text)