我几天前刚刚开始使用R.对于数据分析,我偶然发现了以下问题:
我有几行和一列数据。我对A列感兴趣。在A列中有一些行具有相同的值。如果有10行或更多行具有相同的值,我想保留它们。我不想在进一步分析中使用其他行。
到目前为止我写的内容:
subset(table(data$A),table(data$A)>=10, drop=FALSE)
问题:它并没有真正起作用。当我最终聚合并将它们分组时,我最终会再次出现已删除的行。其他专栏也以某种方式退出。
很抱歉写作绝对不是技术性的。
任何想法?
答案 0 :(得分:0)
让我们创建一个data.frame:
df1 <- data.frame(A=c(rep(1, 10), rep(2,5), rep(3,12), rep(4,6)),
B = rnorm(33),
C = rnorm(33, mean=100))
现在,您可以使用split
解决问题,并查找包含10行或更多行的数据组:
> tmp <- lapply(split(df1, df1$A), function(x) x[length(x$A)>=10, ])
> do.call(rbind, tmp)
A B C
1.1 1 1.847173929 101.44195
1.2 1 0.140540889 98.84883
1.3 1 -0.588164254 100.89362
1.4 1 1.325389063 99.70454
1.5 1 1.168492910 99.31399
1.6 1 0.394623296 100.82031
1.7 1 -1.652867096 101.47617
1.8 1 -0.005714566 100.81326
1.9 1 -1.248685987 98.59261
1.10 1 -0.774900426 102.11714
3.16 3 0.475175282 99.00934
3.17 3 1.141757827 101.04925
3.18 3 -0.144273962 99.58414
3.19 3 0.621142217 98.72315
3.20 3 0.768943017 99.42351
3.21 3 -1.906744188 99.08345
3.22 3 0.388444691 100.07014
3.23 3 -0.845029096 101.66754
3.24 3 0.396626635 99.52390
3.25 3 0.597764453 99.76741
3.26 3 -0.794314145 99.90497
3.27 3 0.347058621 100.17985
答案 1 :(得分:0)
一个整合的解决方案:
library(dplyr)
df1 <- data.frame(A=c(rep(1, 10), rep(2,5), rep(3,12), rep(4,6)),
B = rnorm(33),
C = rnorm(33, mean=100))
df1 %>%
group_by(A) %>%
add_tally() %>%
filter(n >= 10)
我们获取数据,按A
中的因子对其进行分组,然后添加一列来计算每个组中有多少行,然后仅过滤该组中有10行或更多行的行。 / p>