首页 > 解决方案 > 计算 R 中的条件份额

问题描述

考虑以下数据框:

d <- data.frame(a = c("s10","s10","s10","s20","s30"),
                b = c("t10","t40","t30","t20","t60"))

我想从此数据框中获取以下数据:

    a   b   c
1:  s10 t10 0.33
2:  s10 t40 0.33
3:  s10 t30 0.33
4:  s20 t20 1
5:  s30 t60 1

也就是说,如果 a 列中的值属于 b 列中的多个值,那么我想计算份额。例如,对于 a 列中的“s10”,b 列中有三个值(“t10”、“t40”和“t30”),因此第 3 列中的值应该是:1/3 = 0.33。

标签: rdataframe

解决方案


我们可以用data.table

library(data.table)
setDT(d)[, c := 1/.N, a]

推荐阅读