如何相对于现有列的值向R中的新列添加值

问题描述 投票:0回答:1

我有10个不同的数据框。

名为Group1的数据框:

    ï..  calories                      components
1  meal1      177     150 oats + 250 skimmed milk
2 snack1      145  200 yougurt + 100 blackberries
3  meal2      560            200 beans + 100 lamb
4 snack2       66                           apple
5  meal3      160  1pc crumpet + 25 spread cheese

我想获取总卡路里(我做了总和(Group1 $ calories)并工作正常)。同样,我有9个小组。现在,我有另一个称为参与者的数据框:

> participants SubjectId Gender Groups  ExtraCalories        GW
             1           1      F     G3   -1310.000000  0.000000
             2           2      M     G6    -920.796555  4.331278
             3           3      M     G2     -25.395170  4.727376
             4           4      M     G1     169.256448  3.543941
             5           5      M     G4    -340.672353  4.591774

我想添加一个名为总卡路里的新列,其中包含我之前计算的那些总卡路里的值。但是问题是我希望将数据帧组1的总卡路里分别放在G1和G1的行上。

r dataframe
1个回答
0
投票

[如果您有数据帧Group1Group2Group3 ... Group10,您可以尝试获取列表中的所有数据帧,获取每个数据帧中calories列的总和,以及merge participants数据帧。

merge(transform(stack(sapply(mget(paste0('Group', 1:10)), function(x) 
      sum(x$calories))), ind = paste0('G', 1:10)), 
      participants, by.x = "ind", by.y = "Groups")
© www.soinside.com 2019 - 2024. All rights reserved.