【发布时间】:2019-08-17 21:59:07
【问题描述】:
这是我在这个网站上的第一篇文章,如有任何错误,请见谅。
给定一个数据框
xyz <- data.frame(GEO=c("Belgium", "Belgium", "Belgium", "Germany", "Germany", "Germany", "Italy", "Italy", "Italy"),
year=c(2008, 2009, 2010, 2008, 2009, 2010, 2008, 2009, 2010),
median=c(10.3, 45.2, 34.2, 67.8, 68.7, 69.9, 53.2, 43.2, 33.3),
imigration=c(10.2, 45.2, 47.4, 33.3, 44.4, 55.5, 21.5, 76.5, 78.4))
我要做的就是计算中位数和移民的平均变化指数。
index=(x[n]/x[1])^(1/(n-1))
我尝试了很多解决方案,但找不到好的解决方案。 这是我的代码 - 也许你会用它来帮助我。
第一:
groupColumns = c("GEO","year")
dataColumns = c("median", "imigration")
index_median = ddply(mediana2, groupColumns, function(x) x[c((nrow(x)/x[1])^(1/nrow(x)-1)), ])
head(index_median)
第二:
xyz_index <- aggregate(xyz$median, xyz$imigration by=list(Category=xyz$"GEO/TIME"), FUN=median$index_median[nrow(median)]/median[1])^(1/(nrow(median)-1))
我想获得每个国家(比利时、德国、意大利)的中位数和移民(index_median、index_imigration)的平均变化指数。 类似的东西(数字是假的):
GEO index_median index_imigration
1 Germany 2.3 1.3
2 Italy 1.6 1.6
3 Belgium 1.2 2.0
非常感谢!
【问题讨论】:
-
您能否编辑您的问题并包含您的预期输出:即您的结果应该是什么样的?
-
感谢您的建议,完成!
-
@wloczykijek 欢迎来到我认为你应该阅读this。同时,你想要
library(dplyr);xyz %>% group_by(GEO) %>% mutate(Ind=((median/first(median))^(1/(row_number()-1)))) -
@A.Suliman 我编辑了我的帖子 - 你可以看到我到底想要得到什么
-
现在更好,最后一个问题
n在index=(x[n]/x[1])^(1/(n-1))中代表什么,我认为这是最后一个 obs,例如比利时的中位数是 34.2