【发布时间】:2019-09-26 21:14:24
【问题描述】:
我有一个基于计数总和过滤数据集的问题
我的文件如下所示:
g1 a 2
g1 a 3
g1 a 0
g1 b 1
g2 b 3
g2 c 4
g2 d 9
g3 e 1
g3 f 3
g4 g 10
g4 h 18
g4 i 23
第一列是基因名称。我想从第三列计算与每个基因相关的总和,对于 g1,它是 6,对于 g2,它是 16,依此类推。那么条件是如果每个基因的总和 > 10 然后过滤上面的输入数据集,使得我的输出看起来像
g2 b 3
g2 c 4
g2 d 9
g4 g 10
g4 h 18
g4 i 23
这是我迄今为止尝试过的:
tab <- read.data("input.txt",header=FALSE)
genelist <- split(tab,tab[,1])
我如何对其求和并过滤掉> 10。我想我必须使用 sapply 来循环它,但我被困在这里。 任何帮助表示赞赏
【问题讨论】:
-
@NelsonGon 不完全是。 OP希望保留原始行,而不仅仅是总和值:-)
-
也许使用
dplyrmutate?我的错! -
用
dplyr你可以做df %>% group_by(V1) %>% filter(sum(V3) > 10) -
@RonakShah 我实际上找不到重复项,所以可以将其发布为答案。
-
如果要保留
Sum列:df %>% group_by(V1) %>% mutate(Sum=sum(V3)) %>% filter(Sum > 10)