首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中按行计算基尼系数

R中按行计算基尼系数
EN

Stack Overflow用户
提问于 2016-03-11 17:16:34
回答 1查看 2.3K关注 0票数 1

stackoverflow

我试图计算数据中每一行的基尼系数,它是1326行长,由6列(1326 X 6)构成。

我现在的密码..。

代码语言:javascript
复制
attacks$attack_gini  <- gini(x = c(attacks$attempts_open_play,
attacks$attempts_corners,attacks$attempts_throws,
attacks$attempts_fk,attacks$attempts_set_play,attacks$attempts_penalties))

..。用相同的数字0.7522439填充所有行-这显然是错误的。

注意:我正在使用reldist包中的gini函数。

有什么方法可以计算每一行中的6列的基尼值吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-13 11:25:07

函数gini of reldist不接受数据作为输入。您可以很容易地得到数据的第一列的系数,如下所示:

代码语言:javascript
复制
> gini(attacks$attempts_open_play)
[1] 0.1124042 

但是,当您执行c(attacks$attempts_open_play, attacks$attempts_corners, ...)时,实际上是在生成一个列表,其中的所有列都在后面,因此您的gini调用返回了一个数字,例如:

代码语言:javascript
复制
> gini(c(attacks$attempts_open_play, attacks$attempts_corners))
[1] 0.112174

这就是为什么您要为attacks$attack_gini的每一行分配相同的单个数字。如果我正确理解了如何计算每一行列的值的基尼系数,您可以使用应用,如下所示

代码语言:javascript
复制
attacks$attack_gini <- apply(attacks[,c('attempts_open_play', 'attempts_corners', ...)], 1, gini)

其中值为1的第二个参数适用于每一行的函数gini

代码语言:javascript
复制
head(apply(attacks[,c('attempts_open_play', 'attempts_corners')], 1, gini))
[1] 0.026315789 0.044247788 0.008928571 0.053459119 0.019148936 0.007537688

希望能帮上忙。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35946154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档