在数据框中拆分分隔的字符串列,只取新列中的最后一个元素

时间:2018-01-26 04:47:55

标签: r string dataframe

这必须是一个非常容易的任务(是的,这可能会被标记为重复)但我无法找到任何地方如何在数据帧内简单地执行此操作,而无需从列创建列表并将其放回。下面的可重现代码:

我只想分隔列df中的最后一个元素,用逗号分隔:

df<- c("Lagos, Nigeria", "United States", "Buckingham Palace, Great Britain", 
   "Madison Square Garden, NY, New York, USA")
df <- data.frame(df, c(1:length(df)), stringsAsFactors = FALSE)

df$column.desired <- c("Nigeria", "United States", "Great Britain", 
              "USA")            

1 个答案:

答案 0 :(得分:1)

我们可以使用sub来匹配字符(.*),直到逗号,后跟零或更多空格(\\s*),然后是一个或多个字符不是,[^,]+)直到字符串的结尾($),作为一个组((...))捕获并替换为反向引用(\\1 })捕获的组

df$column.desired <-sub(".*,\\s*([^,]+)$", "\\1", df$df)
df$column.desired
#[1] "Nigeria"       "United States" "Great Britain" "USA"