使用MUTATE:growth rate添加新变量
我已经好几个月没有编写代码了,现在遇到了以下问题。 我有以下数据集:使用MUTATE:growth rate添加新变量,r,mutate,R,Mutate,我已经好几个月没有编写代码了,现在遇到了以下问题。 我有以下数据集: Year World_export China_exp World_import China_imp 1 1992 3445.534 27.7310 3402.505 6.2220 2 1993 1940.061 27.8800 2474.038 18.3560 3 1994 2458.337 39.6970 2978.314 3.327
Year World_export China_exp World_import China_imp
1 1992 3445.534 27.7310 3402.505 6.2220
2 1993 1940.061 27.8800 2474.038 18.3560
3 1994 2458.337 39.6970 2978.314 3.3270
4 1995 4641.168 15.9790 5504.787 18.0130
5 1996 5680.688 74.1650 6939.291 25.1870
6 1997 7206.604 70.2440 8639.422 31.9030
7 1998 7069.725 99.6510 8530.293 41.5030
8 1999 5916.077 169.4593 6673.743 37.8139
9 2000 7331.588 136.2180 8646.253 47.3789
10 2001 7471.374 143.0542 8292.893 41.2899
11 2002 8074.975 217.4286 9092.341 46.4730
12 2003 9956.433 162.2522 11558.007 71.7753
13 2004 13751.671 282.8678 16345.452 157.0768
14 2005 15976.238 430.8655 16708.094 284.1065
15 2006 19728.935 398.6704 22344.856 553.6356
16 2007 24275.244 484.5276 28693.113 815.7914
17 2008 32570.781 613.3714 39381.251 1414.8120
18 2009 21282.228 173.9463 28563.576 1081.3720
19 2010 25283.462 475.7635 34884.450 1684.0839
20 2011 41418.670 636.5881 45759.051 2193.8573
21 2012 46027.529 432.6025 46404.382 2373.4535
22 2013 37132.301 460.7133 43022.550 2829.3705
23 2014 36046.461 640.2552 40502.268 2373.2351
24 2015 26618.982 781.0016 30264.299 2401.1907
25 2016 23537.354 472.7022 27609.884 2129.4806
我需要的很简单:计算每个变量的增长率,也就是说,找出两个元素之间的差异,除以第一个元素,再乘以100
我正在尝试编写一个脚本,结果显示错误消息:
trade_Ch %>%
mutate (
World_exp_grate = sapply(2:nrow(trade_Ch),function(i)((World_export[i]-World_export[i-1])/World_export[i-1]))
)
mutate\u impl(.data,dots)中出错:列World\u exp\u grate
必须
长度为25(行数)或1,而不是24
尽管这段代码给了我正确的值:
x <- sapply(2:nrow(trade_Ch),function(i)((trade_Ch$World_export[i]-trade_Ch$World_export[i-1])/trade_Ch$World_export[i-1]))
x问题是您无法计算第一行的世界经验栅格。因此,您必须将其设置为NA
解决这个问题的一个变体是
trade_Ch %>%
mutate (World_export_lag = lag(World_export),
World_exp_grate = (World_export - World_export_lag)/World_export_lag)) %>%
select(-World_export_lag)
lag
将向量移动一个位置
lag(1:5)
# [1] NA 1 2 3 4
我们能做到
trade_Ch %>%
mutate(world_exp_grate = 100*(World_export - lag(World_export))/lag(World_export))
希望这有帮助
library(dplyr)
df %>%
mutate_each(funs(chg = ((.-lag(.))/lag(.))*100), World_export:China_imp)
尝试trace\u Ch%>%变异(world\u exp\u grate=(world\u export-lag(world\u export)/lag(world\u explort))
这太棒了!太简单了!感谢您指出问题的原因。我认为表的末尾缺少值,而不是开头缺少值。也就是说,2017年没有值,我猜这就是问题的原因。哇!这对我最有效。我印象深刻)谢谢你,伙计!很高兴它有帮助:)干杯<据我所知,每个
都不推荐使用。使用mutate_at
代替。你是对的,蒂诺,下面的脚本现在确实可以工作了,尽管我还在研究如何在文件中保留新变量:trade_Ch%>%mutate_at(vars(世界出口,中国出口,世界进口,世界进口),funs(chg=(-lag()/lag()*100))
哦,谢谢@Tino,你说得对!德克尔金,你能详细说明一下你现在被困在什么地方吗?