2016-09-21 16 views
2

實施例:這是group_by和lead/lag中的錯誤嗎?

library(dplyr) # version 0.4.3 

df <- 
    data.frame(hour = 0:11, minutes = runif(12, 0, 59), count = rpois(12, 3)) %>% 
    arrange(hour, minutes) 

df %>% 
    group_by(hour) %>% 
    mutate(diff = count - lag(count, default = max(count))) 

引發錯誤:

Error: expecting a single value 

下面提出了一個不同的錯誤:

> df %>% 
+  group_by(hour) %>% 
+  mutate(diff = count - lag(count, default = count)) 
Error: not compatible with requested type 

我覺得同時應該工作和答案應該是包含數據的幀diff列爲零。這是因爲每個組只有一行,我期望默認不存在的行值是該組中的最大數量。

+0

沒有'dplyr_0.5.0'的問題 – akrun

+0

謝謝,那一定是吧。 – Alex

+0

好的,安裝到版本0.5.0修復了第一個問題,但不是第二個問題。 – Alex

回答

2

第一個錯誤似乎是版本特定的,但第二個我們可以通過選擇first觀察'count'或last之一來刪除。

df %>% 
    group_by(hour) %>% 
    mutate(diff = count - lag(count, default = first(count)))