R - 删除数据框列

时间:2017-12-21 00:07:25

标签: r dataframe

我在数据框中有一列,其中每条记录都是名称列表。

e.g。 John Smith,Jane Smith,Joe Smith,Judy Smith等......

我想删除整个列的第一个名称以外的所有内容,基本上是从第一个逗号开始,所以我的列只有一个名称。

e.g。约翰史密斯

我试过玩sub,gsub,正则表达式,但我迷路了。我刚刚开始使用R大约两天前做得很好,直到遇到这个障碍。

任何帮助表示感谢。

3 个答案:

答案 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, ",.*", ""))