r - 计算 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。
解决方案
我们可以用data.table
library(data.table)
setDT(d)[, c := 1/.N, a]