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

R 如果条目出现少于x次,则删除数据框中的行,r,dataframe,duplicate-removal,delete-row,R,Dataframe,Duplicate Removal,Delete Row,我有以下数据框,称之为df,它是一个由三个向量组成的数据框:“Name”、“Age”和“ZipCode” 如果df中的Name在整个数据帧中出现的次数少于2次(灵活地说是3、4或x次),我想删除整行df。基本上在数据框中保留Bob和Joe,但删除Jim。我该怎么做 我试着把它变成一张桌子: > table(df$Name) Bob Jim Joe 2 1 2 但是我不知道从那里走到哪里。你可以这样使用ave: df[as.numeric(ave(df$Name, df$N

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

如果
df
中的
Name
在整个数据帧中出现的次数少于2次(灵活地说是3、4或x次),我想删除整行
df
。基本上在数据框中保留
Bob
Joe
,但删除
Jim
。我该怎么做

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

> table(df$Name)

Bob Jim Joe 
 2   1   2 

但是我不知道从那里走到哪里。

你可以这样使用
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$Name
字符
向量,而不是
因子
向量


您还可以继续使用
,如下所示:

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
x=2]),]
#姓名年龄ZipCode
#1乔16 60559
#3鲍勃6494127
#4乔2394122
#5鲍勃4525462

第一个很有效,但第二个正是我想要的。非常感谢@姆莱,没问题。您还可以浏览“data.table”包,该包允许您执行以下操作:
library(data.table);DT=2]
…或更短的data.table版本,归功于@mnel-
DT[,if(.N>=2).SD,by=Name]
@最近的邮件,不错!
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