如何删除包含R中小于3行数据的群体? [重复] 如何删除包含R中小于3行数据的群体? [重复]

2019-05-12 08:06发布

这个问题已经在这里有一个答案:

  • 根据每个组的行数的子集的数据帧 2分的答案

我使用R中的dplyr包,并通过3个变量(年,网站,育雏)分组我的数据。

我想摆脱由不到3行的组。 例如,下面的样品中,我想移除育雏行“2”。 我有很多的数据有所以当我可以精心手工做的,那将是如此有用使用R.自动化它这样做

Year Site Brood Parents
1996 A    1     1  
1996 A    1     1  
1996 A    1     0  
1996 A    1     0  
1996 A    2     1      
1996 A    2     0  
1996 A    3     1  
1996 A    3     1  
1996 A    3     1  
1996 A    3     0  
1996 A    3     1  

我希望这是有道理的,并非常感谢你提前为您的帮助! 我是新来的R和计算器所以道歉,如果我的措辞这一问题的方法是不是很好! 让我知道如果我需要提供任何其他信息。

Answer 1:

做到这一点的方法之一是使用魔法n()内的功能filter

library(dplyr)

my_data <- data.frame(Year=1996, Site="A", Brood=c(1,1,2,2,2))

my_data %>% 
  group_by(Year, Site, Brood) %>% 
  filter(n() >= 3)

n()函数给出(总或行的数目,如果没有分组)当前组中的行数。



Answer 2:

投掷data.table这里的做法入党:

library(data.table)
setDT(my_data)
my_data[ , if (.N >= 3L) .SD, by = .(Year, Site, Brood)]


Answer 3:

你也可以做到这一点使用基础R:

temp <- read.csv(paste(folder,"test.csv", sep=""), head=TRUE, sep=",")
matches <- aggregate(Parents ~ Year + Site + Brood, temp, FUN="length")
temp <- merge(temp, matches, by=c("Year","Site","Brood"))
temp <- temp[temp$Parents.y >= 3, c(1,2,3,4)]


文章来源: How to delete groups containing less than 3 rows of data in R? [duplicate]
标签: r rows