我有一个看起来像这样的data.table:
V1 V2 V3 V4
4: ASW NA19704-200-37 SVLEN 0
5: ASW NA19834-200-37 SVLEN 0
301: YRI GS000017413 SVLEN 0
302: YRI GS000017898 SVLEN 0
303: YRI GS000018623 SVLEN 0
我在数据框中也有这个。我想对V1和V3具有相同值的所有列求和V4。
V1有5个值,V3有24个,所有这些都是字符串,但我可以将它们转换为因子或其他任何值。
声明:
chr10pos53400000dt[chr10pos53400000dt$V3=="CDS",sum(V4),by=V1]
返回:
V1 V1
1: ASW 9
2: CEU 68
3: Lupus 109
4: RA 160
5: YRI 163
应该归还的是什么。
只有现在,我希望对V3中的所有值执行此操作。为此,我通过命令ComponentList=unique(chr10pos53400000dt$V3)
创建了一个名为“ComponentList”的向量。
语句for (i in ComponentList) {ByComponent[i]<-chr10pos53400000dt[chr10pos53400000dt$V3==ComponentList[i],sum(V4),by=V1]}
发出24条错误消息(与ComponentList
的长度相同)
24: In `[<-.data.frame`(`*tmp*`, i, value = structure(list( ... :
provided 2 variables to replace 1 variables
有谁知道如何用上面的结果填充新的数据框,但迭代?
非常感谢!
答案 0 :(得分:2)
我想你只是想要这个:
chr10pos53400000dt[, sum(V4), by=list(V3, V1)]