如果条目少于x次,则删除数据框中的行

时间:2013-12-17 05:19:51

标签: r dataframe duplicate-removal delete-row

我有以下数据框,称之为df,这是一个由三个向量组成的数据框:“Name”,“Age”和“ZipCode”。

df=      
  Name Age ZipCode
1  Joe  16   60559
2  Jim  20   60637
3  Bob  64   94127
4  Joe  23   94122
5  Bob  45   25462

如果df中的Name在整个数据框中出现少于2次(并且灵活地为3,4或x次),我想删除整个Bob行。基本上在数据框中保留JoeJim,但删除> table(df$Name) Bob Jim Joe 2 1 2 。我怎样才能做到这一点?

我试着把它变成一张桌子:

{{1}}

但我不知道从哪里去。

1 个答案:

答案 0 :(得分:6)

您可以像这样使用ave

df[as.numeric(ave(df$Name, df$Name, FUN=length)) >= 2, ]
#   Name Age ZipCode
# 1  Joe  16   60559
# 3  Bob  64   94127
# 4  Joe  23   94122
# 5  Bob  45   25462

此答案假设df$Namecharacter向量,而不是factor向量。


您还可以按照以下步骤继续table

x <- table(df$Name)
df[df$Name %in% names(x[x >= 2]), ]
#   Name Age ZipCode
# 1  Joe  16   60559
# 3  Bob  64   94127
# 4  Joe  23   94122
# 5  Bob  45   25462