Mon*_*Mon 5 r duplicate-removal delete-row dataframe
我有以下数据框,称之为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
Run Code Online (Sandbox Code Playgroud)
我希望删除整个行,df如果Name它在整个数据框中出现少于2次(并且灵活地为3倍,4倍或x倍).基本上保持Bob与Joe在数据帧,但删除Jim.我怎样才能做到这一点?
我试着把它变成一张桌子:
> table(df$Name)
Bob Jim Joe
2 1 2
Run Code Online (Sandbox Code Playgroud)
但我不知道从那里去哪里.
你可以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
Run Code Online (Sandbox Code Playgroud)
这个答案假定它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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1078 次 |
| 最近记录: |