我在数据框中有一列,其中每条记录都是名称列表。
e.g。 John Smith,Jane Smith,Joe Smith,Judy Smith等......
我想删除整个列的第一个名称以外的所有内容,基本上是从第一个逗号开始,所以我的列只有一个名称。
e.g。约翰史密斯
我试过玩sub,gsub,正则表达式,但我迷路了。我刚刚开始使用R大约两天前做得很好,直到遇到这个障碍。
任何帮助表示感谢。
答案 0 :(得分:1)
假设您的姓名位于数据框Name
中名为mydata
的列中,请先尝试此操作。它说“用空字符串替换逗号后跟任何东西”。
sub(",.+", "", mydata$Name)
如果看起来有效,请将结果分配给列:
mydata$Name <- sub(",.+", "", mydata$Name)
答案 1 :(得分:0)
如果您的数据框如下:
df = data.frame(names = c("John Smith, Jane Smith, Joe Smith, Judy Smith","Jane Smith, Joe Smith, Judy Smith","Joe Smith, Judy Smith","Judy Smith"))
> df
names
1 John Smith, Jane Smith, Joe Smith, Judy Smith
2 Jane Smith, Joe Smith, Judy Smith
3 Joe Smith, Judy Smith
4 Judy Smith
然后做:
df$first = sub(",.*","",df$names)
结果:
> df
names first
1 John Smith, Jane Smith, Joe Smith, Judy Smith John Smith
2 Jane Smith, Joe Smith, Judy Smith Jane Smith
3 Joe Smith, Judy Smith Joe Smith
4 Judy Smith Judy Smith
答案 2 :(得分:0)
stringr答案虽然相同
pattern <- data.frame("colid" = c(1, 2),
"text" = c("john smith, jane smith", "jon stewart, steven colbert"))
pattern %>%
mutate(text2 = str_replace_all(text, ",.*", ""))