Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
dplyr领先/滞后,与组别相比_R_Dplyr_Lead - Fatal编程技术网

dplyr领先/滞后,与组别相比

dplyr领先/滞后,与组别相比,r,dplyr,lead,R,Dplyr,Lead,我不明白为什么超前和滞后函数忽略了分组。 这里有一个简单的例子(实际上我需要按5列进行分组)。 ​ ​ 然后试着提前安排 df %>% arrange(group, order) %>% group_by(group) %>% mutate(previous = dplyr::lag(value, n=1, default=NA)) "group" "order" "value" "previous" "a" 1 25 NA "a" 2

我不明白为什么超前和滞后函数忽略了分组。 这里有一个简单的例子(实际上我需要按5列进行分组)。 ​

​ 然后试着提前安排

df %>% 
    arrange(group, order) %>%
    group_by(group) %>% 
    mutate(previous = dplyr::lag(value, n=1, default=NA))

"group" "order" "value" "previous"
"a" 1   25  NA
"a" 2   43  25
"a" 3   15  43
"a" 4   22  15
"a" 5   31  22
"b" 1   11  31
"b" 2   18  11
"b" 3   37  18
"b" 4   24  37
"b" 4   9   24
​ 它修复了排序,但仍然忽略了group by,因为B1应该是NA而不是31。 ​ 我是否遗漏了一些明显的东西,或者可以通过不这样组合来滞后/领先和分组

​ 它可以在SQL中使用

LAG(value, 1, NULL) OVER (PARTITION BY group ORDER BY order)
​ ​
如果格式不好,请道歉,以前没有发布代码问题。

哦,就这么简单,花了很多时间尝试不同的事情啊哈。重新启动R并将dplyr从0.7.4更新为0.7.6。多亏了这两个方面,问题仍然存在于
plyr
。因此,如果出于某种原因同时导入了
dplyr
plyr
,请最后导入
dplyr
。否则,
plyr
将覆盖
dplyr
lag
功能,从而导致此处所述的问题。这是否回答了您的问题?
df %>% 
    arrange(group, order) %>%
    group_by(group) %>% 
    mutate(previous = dplyr::lag(value, n=1, default=NA))

"group" "order" "value" "previous"
"a" 1   25  NA
"a" 2   43  25
"a" 3   15  43
"a" 4   22  15
"a" 5   31  22
"b" 1   11  31
"b" 2   18  11
"b" 3   37  18
"b" 4   24  37
"b" 4   9   24
LAG(value, 1, NULL) OVER (PARTITION BY group ORDER BY order)