2017-07-04 4 views
0

J'essaye de calculer l'index de Gini pour chaque rangée de ma base de données. Chaque ligne est un client et chaque colonne est une session mensuelle. Donc ce que je dois faire est d'ajouter une colonne avec l'index de Gini par rangée, pour chaque client tout au long des 12 mois. See example attachedIndex de Gini dans R

J'ai trouvé quelques exemples en ligne et a fait ceci:

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) 

Cependant, je reçois l'erreur suivante:

Error in match.fun(FUN) : object 'gini' not found

J'ai installé à la fois Ineq et Reldist (et bibliothèques) donc je Je ne sais pas pourquoi cela ne fonctionne pas.

+0

De votre code, je ne peux pas reproduire l'erreur, donc soit vous n'avez pas installé ou charger correctement les paquets? – agenis

Répondre

0

Essayez de le faire pour avoir votre coeff de gini par colonne:

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") 

Si vous voulez par pour chaque lignes, essayez ceci:

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") 

Finaly vous ajoutez vos coeffs à la fin de votre data_frame avec une fusion par exemple:

your_data_final = merge(your_data,data_coeff, by = "customer")