这必须是一个非常容易的任务(是的,这可能会被标记为重复)但我无法找到任何地方如何在数据帧内简单地执行此操作,而无需从列创建列表并将其放回。下面的可重现代码:
我只想分隔列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")
答案 0 :(得分:1)
我们可以使用sub
来匹配字符(.*
),直到逗号,
后跟零或更多空格(\\s*
),然后是一个或多个字符不是,
([^,]+
)直到字符串的结尾($
),作为一个组((...)
)捕获并替换为反向引用(\\1
})捕获的组
df$column.desired <-sub(".*,\\s*([^,]+)$", "\\1", df$df)
df$column.desired
#[1] "Nigeria" "United States" "Great Britain" "USA"