我有一个类似于以下内容的data.frame:

df <- data.frame(population = c("AA","AA","AA","BB","BB","CC","CC","CC"),
                 individual = c("A1","A2","A3","B1","B2","C1","C2","C3"),
                 Haplotype1 = rep(1:4,2),
                 Haplotype2 = rep(5:8,2))
 > df
  population individual Haplotype1 Haplotype2
1         AA         A1          1          5
2         AA         A2          2          6
3         AA         A3          3          7
4         BB         B1          4          8
5         BB         B2          1          5
6         CC         C1          2          6
7         CC         C2          3          7
8         CC         C3          4          8

我想创建一个新的数据集,其中任何人口少于
从数据集中省略了指定数量的个人。例如我
只想重新分析三个以上人口的数据
更多的人。以下是我想要的数据集:
> df <- df[!df$population=="BB",]
> df
  population individual Haplotype1 Haplotype2
1         AA         A1          1          5
2         AA         A2          2          6
3         AA         A3          3          7
6         CC         C1          2          6
7         CC         C2          3          7
8         CC         C3          4          8

但是,我有400个人口,规模从5到155个人不等,并且
按名称手动挑选种群是不可行的。我想写一个
我在本质上说的功能是“给我一个包含所有人群的数据集
由X个或更多个人组成,并删除少于的个人
X。”感谢您的任何帮助或反馈。

最佳答案

这应该可以解决问题:

tab <- table(df$population) > 2
df[df$population %in% names(tab)[tab], ]

#   population individual Haplotype1 Haplotype2
# 1         AA         A1          1          5
# 2         AA         A2          2          6
# 3         AA         A3          3          7
# 6         CC         C1          2          6
# 7         CC         C2          3          7
# 8         CC         C3          4          8

关于删除属于指定长度因子的数据集的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13069949/

10-12 17:13
查看更多