R 带变异的索引
我有一个按国家划分的不平衡小组,如下所示:R 带变异的索引,r,mutate,R,Mutate,我有一个按国家划分的不平衡小组,如下所示: cname year disability_PC family_PC ... allFunctions_PC Denmark 1992 953.42 1143.25 ... 9672.43 Denmark 1995 1167.33 1361.62 ... 11002.45 Denmark 2000 1341 1470.54 ... 11200 Finland
cname year disability_PC family_PC ... allFunctions_PC
Denmark 1992 953.42 1143.25 ... 9672.43
Denmark 1995 1167.33 1361.62 ... 11002.45
Denmark 2000 1341 1470.54 ... 11200
Finland 1991 1095 955 ... 7164
Finland 1996 1067 1040 ... 7600
等等,在更多的年份和国家。我想做的是计算每种类型的社会支出(残疾、家庭、所有功能)的移动索引
因此,我尝试了以下方法:
pdata %>%
group_by(cname) %>%
mutate_at(vars(disability_absPC, family_absPC, Health_absPC, oldage_absPC, unemp_absPC, housing_absPC, allFunctions_absPC),
funs(chg = ((./lag(.))*100)))
代码似乎可以工作,因为R报告了前10列,并正确地表示“多了56行,多了13个变量”。但是,这些不会添加到数据帧中。我是说,打字
view(pdata)
变量不存在,就好像mutate命令没有创建这些变量一样。
我做错了什么
谢谢你的支持 我们可以使用一些
select\u helpers
来简化这个过程,而且funs
也不推荐使用。我们可以使用列表
library(dplyr)
pdata <- pdata %>%
group_by(cname) %>%
mutate_at(vars(ends_with('absPC')), list(chg = ~ ((./lag(.))*100))
库(dplyr)
pdata%
分组依据(cname)%>%
在(变量(以('absPC')结尾)、列表(chg=~(./滞后()*100))处进行变异
关于不创建变量的问题,基于OP的代码,输出不会分配给任何对象标识符,也不会更新原始对象(
我们可以使用一些选择帮助程序使这更简单,而且funs
也不推荐使用。在适当的情况下,我们可以使用列表
library(dplyr)
pdata <- pdata %>%
group_by(cname) %>%
mutate_at(vars(ends_with('absPC')), list(chg = ~ ((./lag(.))*100))
库(dplyr)
pdata%
分组依据(cname)%>%
在(变量(以('absPC')结尾)、列表(chg=~(./滞后()*100))处进行变异
关于不创建变量的问题,基于OP的代码,输出不会分配给任何对象标识符或更新原始对象(值就在那里,只要做as.data.frame
。它来自tibble
的打印选项值就在那里,只要做as.data.frame
。它来自tibble
的打印选项,与“ends_with”完美搭配,谢谢!(是的,我的缺点是缺少标识符)这与“以”结尾,谢谢!(是的,我的错是缺少标识符)