R 如果条目出现少于x次,则删除数据框中的行
我有以下数据框,称之为df,它是一个由三个向量组成的数据框:“Name”、“Age”和“ZipCode” 如果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
在整个数据帧中出现的次数少于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