stackoverflow
我试图计算数据中每一行的基尼系数,它是1326行长,由6列(1326 X 6)构成。
我现在的密码..。
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列的基尼值吗?
提前谢谢。
发布于 2016-03-13 11:25:07
函数gini of reldist不接受数据作为输入。您可以很容易地得到数据的第一列的系数,如下所示:
> gini(attacks$attempts_open_play)
[1] 0.1124042 但是,当您执行c(attacks$attempts_open_play, attacks$attempts_corners, ...)时,实际上是在生成一个列表,其中的所有列都在后面,因此您的gini调用返回了一个数字,例如:
> gini(c(attacks$attempts_open_play, attacks$attempts_corners))
[1] 0.112174这就是为什么您要为attacks$attack_gini的每一行分配相同的单个数字。如果我正确理解了如何计算每一行列的值的基尼系数,您可以使用应用,如下所示
attacks$attack_gini <- apply(attacks[,c('attempts_open_play', 'attempts_corners', ...)], 1, gini)其中值为1的第二个参数适用于每一行的函数gini。
head(apply(attacks[,c('attempts_open_play', 'attempts_corners')], 1, gini))
[1] 0.026315789 0.044247788 0.008928571 0.053459119 0.019148936 0.007537688希望能帮上忙。
https://stackoverflow.com/questions/35946154
复制相似问题