R:使用该子集上的计算修改Dataframe的子集

时间:2014-09-26 14:23:47

标签: r statistics

我将通过示例提出我的问题,因为我不知道一般来说最好的方法是什么。使用内置于R的ChickWeight数据集:

> head(ChickWeight)
    weight Time Chick Diet
1     42    0     1    1
2     51    2     1    1
3     59    4     1    1
4     64    6     1    1
5     76    8     1    1
6     93   10     1    1
> tail(ChickWeight)
      weight Time Chick Diet
573    155   12    50    4
574    175   14    50    4
575    205   16    50    4
576    234   18    50    4
577    264   20    50    4
578    264   21    50    4

我可以使用ddply计算每种独特饮食的平均值,例如

> ddply(d, .(Diet), summarise, mean_weight=mean(weight, na.rm=TRUE))
  Diet   mean_weight
1    1 102.6455
2    2 122.6167
3    3 142.9500
4    4 135.2627

如果我想轻松创建一个修改“重量”的数据框,该怎么办? ChickWeight中的列除以它的相应饮食的平均重量?

1 个答案:

答案 0 :(得分:1)

data.table的解决方案简短,快速且易读:

library(data.table)
cw <- data.table(ChickWeight)
cw[, pct_mw_diet:=weight/mean(weight, na.rm=T), by=Diet]

现在你有一个含有平均体重百分比的专栏