基于data.frame或data.table的多个列创建数据框

时间:2014-06-03 02:57:27

标签: r indexing dataframe data.table

我有一个看起来像这样的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 

有谁知道如何用上面的结果填充新的数据框,但迭代?

非常感谢!

1 个答案:

答案 0 :(得分:2)

我想你只是想要这个:

chr10pos53400000dt[, sum(V4), by=list(V3, V1)]