dplyr领先/滞后,与组别相比
我不明白为什么超前和滞后函数忽略了分组。 这里有一个简单的例子(实际上我需要按5列进行分组)。 然后试着提前安排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
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)