删除R中的行,其值小于x

时间:2018-05-09 16:02:40

标签: r

我几天前刚刚开始使用R.对于数据分析,我偶然发现了以下问题:

我有几行和一列数据。我对A列感兴趣。在A列中有一些行具有相同的值。如果有10行或更多行具有相同的值,我想保留它们。我不想在进一步分析中使用其他行。

到目前为止我写的内容:

subset(table(data$A),table(data$A)>=10, drop=FALSE)

问题:它并没有真正起作用。当我最终聚合并将它们分组时,我最终会再次出现已删除的行。其他专栏也以某种方式退出。

很抱歉写作绝对不是技术性的。

任何想法?

2 个答案:

答案 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>