Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用MUTATE:growth rate添加新变量_R_Mutate - Fatal编程技术网

使用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,你说得对!德克尔金,你能详细说明一下你现在被困在什么地方吗?