在R中按行计算基尼系数
Calculating Gini by Row in R
计算器。
我正在尝试计算我的数据帧的每一行内的基尼系数,该数据帧长 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 列的基尼系数吗?
提前致谢。
reldist
的函数 gini
不接受数据帧作为输入。您可以像这样轻松获得数据框第一列的系数:
> 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
的每一行分配相同的单个数字。如果我理解正确,你要计算每行列值的基尼系数,你可以使用 apply,类似于
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
希望对您有所帮助。
计算器。
我正在尝试计算我的数据帧的每一行内的基尼系数,该数据帧长 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 列的基尼系数吗?
提前致谢。
reldist
的函数 gini
不接受数据帧作为输入。您可以像这样轻松获得数据框第一列的系数:
> 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
的每一行分配相同的单个数字。如果我理解正确,你要计算每行列值的基尼系数,你可以使用 apply,类似于
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
希望对您有所帮助。