如何过滤R中具有特定值的行?

时间:2018-12-17 22:58:08

标签: r filter

我的数据集有21列,包含4625行。由于此处的列内容,我无法粘贴数据集的几行,仅提供了一个演示数据集:

   c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 
1  GCF1 ............................10..................................... 386
2  GCF2 ............................10......................................10
3  GCF3 ............................32......................................10

column21有331个不同的数字,我想根据column21的数目对数据进行分组。例如,我想看看其他列中有多少个GCF具有'10'及其特征。我尝试了以下命令。它带有236行,第11列中有10行,而第21列中没有。

 f2 <- f1[rowSums(sapply(f1[-21], '%in%', c('10'))) > 0,]
   c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 
1  GCF1 ............................10......................................386
2  GCF2 ............................10......................................10

如何根据第21列中的值对行进行排序?

3 个答案:

答案 0 :(得分:1)

dplyr的filter命令旨在完全做到这一点。

这将仅返回c21中具有10的行

library(dplyr)

df %>% 
   filter(c21 == 10)

答案 1 :(得分:1)

使用基数R:

df[df$c21==10, ]

subset(df, c21==10)

使用dplyr:

filter(df, c21==10)

答案 2 :(得分:0)

让您的问题可以重现:

df <- data.frame("a" = 1:5, "b" = c(3, 5, 7, 7, 7), "c" = c(5, 3, 3, 7, 9))

  a b c
1 1 3 5
2 2 5 3
3 3 7 3
4 4 7 7
5 5 7 9

您要基于列c等于3的条件过滤掉该数据帧,对吗? df$c==3是您的“面具”:FALSE TRUE TRUE FALSE FALSE

您可以使用此掩码过滤数据框:df[df$c==3,]给出:

  a b c
2 2 5 3
3 3 7 3