我的数据集有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列中的值对行进行排序?
答案 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