我有以下数据框,称之为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
行。基本上在数据框中保留Joe
和Jim
,但删除> table(df$Name)
Bob Jim Joe
2 1 2
。我怎样才能做到这一点?
我试着把它变成一张桌子:
{{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$Name
是character
向量,而不是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