我想用 R 从包 reldist 中取消 gini() 函数来计算几个图的基尼系数。我有一个数据框,我需要从中使用两列作为 gini 函数的输入。
> head(merged[,c(1,17,29)])
idp c13 w
1 19 126 14.14
2 19 146 14.14
3 19 76 39.29
4 19 74 39.29
5 19 86 39.29
6 19 93 39.29
gini 函数使用第一个元素进行计算(此处为 c13),第二个元素是与 c13 中的每个元素对应的权重(此处为 w)。
所以我需要像这样使用列 c13 和 w :
gini(merged$c13,merged$w)
[1] 0.2959369
问题是我想为每个情节(idp)执行此操作。我有 4000 个不同的 idp 值,每个值都有另外两列的几十个值。
我想我可以使用函数tapply() 来做到这一点。但是我不能使用tapply在函数中放置两个列。
tapply(list(merged$c13,merged$w), merged$idp, gini)
如您所知,这是行不通的。所以我希望得到的是这样的数据框:
idp Gini
1 19 0.12
2 21 0.45
3 35 0.65
4 65 0.23
你知道怎么做吗?也许是 plyr 包?感谢您的帮助!