我有一个类似于以下内容的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/