0

我正在尝试计算数据库每一行的基尼指数。每行是一个客户,每列是每月一次。所以我需要做的是在 12 个月内为每个客户逐行添加一个带有 Gini 索引的列。 见附件示例

我在网上找到了一些例子并这样做了:

Gini_index <- apply(DT_file[,c('sessions_201607_pct','sessions_201608_pct', 'sessions_201609_pct','sessions_201610_pct','sessions_201611_pct','sessions_201612_pct','sessions_201701_pct','sessions_201702_pct','sessions_201703_pct','sessions_201704_pct','sessions_201705_pct','sessions_201706_pct')], 1, gini)

但是,我收到以下错误:

match.fun(FUN) 中的错误:找不到对象“gini”

我已经安装了 Ineq 和 Reldist(以及库),所以我不知道为什么这不起作用。

4

1 回答 1

1

尝试这样做以按列计算您的 gini 系数:

library(ineq)

coeff= NULL
for (i in colnames(your_data[,-1])){
  coeff= c(coeff,round(ineq(your_data[,i],type = 'Gini'),4))
}

data_coeff = data.frame(cbind(coeff,colnames(your_data[,-1])))
colnames(data_coeff) = c("Coeff","Colnames")

如果您希望每行都使用它,请尝试以下操作:

your_new_data = as.data.frame(t(your_data[,-1]), row.names =T)

colnames(your_new_data) = your_data[,1]

ind = NULL
for (i in colnames(your_new_data)){
  ind = c(ind,round(ineq(your_new_data[,i],type = 'Gini'),4))
}

data_coeff= data.frame(cbind(ind,colnames(your_new_data)))
colnames(data_coeff) = c("Coeff","customer")

最后,您在 data_frame 的末尾添加您的 coeffs,例如合并:

your_data_final = merge(your_data,data_coeff, by = "customer" )
于 2017-07-04T14:07:51.833 回答