是否可以使用tapply而无需重新排序数据帧

时间:2018-01-30 15:56:56

标签: r apply tapply

我有一些数据没有为特定变量排序(例如IDS)。我希望能够使用该变量对数据进行分组,并获取列中每个值的比例值,这有助于其组的总数。但是,当使用tapply时,它会重新排序数据,使其符合IDS的顺序,但对于其余的df则不正确。

示例数据和代码:

id_df <- data.frame(IDS = c(2,1,2,1), data = sample(1:4,4,replace = T))
id_df$portions <- unlist(tapply(id_df$data, id_df$IDS, function(x) x / sum(x)))

我得到了什么:

  IDS data  portions
1   2    1 0.6666667
2   1    4 0.3333333
3   2    1 0.5000000
4   1    2 0.5000000

我想要的是什么:

  IDS data  portions
1   2    1 0.5000000
2   1    4 0.6666667
3   2    1 0.5000000
4   1    2 0.3333333

0 个答案:

没有答案