【发布时间】:2017-09-12 16:55:47
【问题描述】:
我正在尝试在 R 中编写一个函数,用于计算一组给定收入和人口份额的基尼分数(收入不平等系数)。这就是我想要做的:
incomes <- c(1175,1520,1865,2210,2555) # incomes
population <- rep(1/5,5)*100 # population shares (5 times 1/5)
income <- incomes*population/sum(incomes*population) # income * frequency / total income
data <- as.data.frame(cbind(incomes,income,population/100))
names(data) <- c("incomes","income","population")
data <- data[order(as.numeric(data$incomes)),] # sort by percentage of income
for (i in 1:length(income)){
data$richer[i] <- 1-sum(data$population[1:i])
}
data$score <- data$income * (data$population + 2 * data$richer)
gini <- round(1-sum(data$score),4) # gini
这一切都很好。但现在我想绘制收入分布图,为此我制作了一个新数据集:
data$population2 <- data$richer + data$population # cumulative
x <- as.data.frame(matrix(data=NA,ncol=1,nrow=20))
names(x) <- c("population2")
x$population2 <- rev(seq(0.05,1,0.05))
data.graph <- join(x, data, by = "population2")
因此,“data$population2”变量的值将是 1、0.8、0.6、0.4、0.2,而 x$population2 的值将是 1、0.95、0.9、0.85、0.8 等,直到 0.05。但是,join 函数只连接 1、0.8、0.2 的值,而不是 0.6 和 0.4。谁能帮帮我?
【问题讨论】: