【发布时间】:2018-05-14 14:44:56
【问题描述】:
我有一个很大的data.table(这里只显示五行)。
taxpath N
Bacteroidetes; Flavobacteriia; Flavobacteriales; Flavobacteriaceae; Formosa; Formosa sp. Hel3_A1_48; 57
Bacteroidetes; Flavobacteriia; Flavobacteriales; Cryomorphaceae; NA; Cryomorphaceae bacterium BACL29 MAG-121220-bin8; 54
Proteobacteria; Alphaproteobacteria; Pelagibacterales; Pelagibacteraceae; Candidatus Pelagibacter; NA; 53
Proteobacteria; Alphaproteobacteria; Pelagibacterales; NA; NA; NA; 41
Planctomycetes; NA; NA; NA; NA; Planctomycetes bacterium TMED84; 41
第一列是taxpath(从左到右的门、纲、目、科、属、种),第二列是N,每条税路出现的频率。
我想要做的是用分号分隔每个税收路径并使用第一个条目。
而且我想计算每个门等级(第一等级,因此是拟杆菌门、变形菌门或Planctomycetes)出现的频率。但是,这个数字应该乘以 N 列中的值。
所以,我所期望的或多或少是这样的。
phylum Nnew
Bacteriodetes 111
Proteobacteria 94
Planctomycetes 41
你能帮我如何在列内进行拆分,并且 - 我想 - group-by 与列 N 相乘吗?
(PS:稍后,我也想对列税路径中的其他元素也这样做,但我认为将其分配到单独的表中更容易)
【问题讨论】:
-
问题的第二部分不清楚。你能显示预期的
-
例如,Proteobacteria 出现在两行(第 3 行和第 8 行)中。第 3 行的值为 53,第 8 行的值为 41。我期望的输出将是列 phylum 具有条目 proteobacteria,列 Nnew 具有值 94(53 +41)。我的意思清楚吗?
-
能否请您查看更新后的代码
-
基于示例,我得到
Bacteriodetes为 326 -
太好了,非常感谢。
标签: r data.table