Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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
R 是否可以在不存储滞后变量的情况下,在多个维度上滞后变量?_R_Dplyr - Fatal编程技术网

R 是否可以在不存储滞后变量的情况下,在多个维度上滞后变量?

R 是否可以在不存储滞后变量的情况下,在多个维度上滞后变量?,r,dplyr,R,Dplyr,在处理一维问题时,可以直接使用lag(x),而无需将其存储为变量,但在处理多维问题时,我不知道如何使用。在这个例子中,我在执行计算之前显式地存储xc_1和xt_1 例如,使用虚拟数据集: dtf <- data_frame(t = rep(2001:2003, 2), c = rep(1:2,each=3), x = rnorm(6)) dtf%突变(xt_1=lag(x))%>% #滞后于c 组由(t)%%>%突变

在处理一维问题时,可以直接使用
lag(x)
,而无需将其存储为变量,但在处理多维问题时,我不知道如何使用。在这个例子中,我在执行计算之前显式地存储
xc_1
xt_1

例如,使用虚拟数据集:

dtf <- data_frame(t = rep(2001:2003, 2),
                  c = rep(1:2,each=3),
                  x = rnorm(6))
dtf%突变(xt_1=lag(x))%>%
#滞后于c
组由(t)%%>%突变(xc_1=lag(x))%%
#将函数计算放在这里
变异(结果=xt_1*xc_1)
是否有一种形式为
lag(x,by=c)
lag(x,by=t)
的函数可以直接执行计算,而不需要中间变量?

没有(据我所知,但我可能错了)。至少当我每次都想用不同的var对_进行分组时,我就是这么做的。不,没有(据我所知,但我可能错了)。至少当我每次都想按不同的var对_进行分组时,我就是这么做的。
dtf <- dtf %>%
        # lag over t 
        group_by(c) %>% mutate(xt_1 = lag(x)) %>% 
        # lag over c
        group_by(t) %>% mutate(xc_1 = lag(x)) %>% 
        # place function computation here
        mutate(result = xt_1 * xc_1)