下一行的参考列具有不同的值

时间:2018-12-27 17:45:30

标签: r dplyr

我有一个具有以下形式的大型数据集:

df <- data.frame(event = c("request","request","response", "request"), 
      value = 1:4)
event      value
request     1
request     2
response    3
request     4

我想写next_different_event_value,行中的value,下一个不同 event。所需的输出:

event      value    next_different_event_value
request     1       3
request     2       3
response    3       4
request     4       NA

理想情况下,我可以使用tidyverse方法且无需加入即可做到这一点。

谢谢。

1 个答案:

答案 0 :(得分:3)

一种dplyr解决方案:

df %>%
 mutate(next_different_event_value = ifelse(event != lead(event), lead(value), NA)) %>%
 fill(next_different_event_value, .direction = "up")

     event value next_different_event_value
1  request     1                          3
2  request     2                          3
3 response     3                          4
4  request     4                         NA

比较“事件”与下一个“事件”行是否相同。如果不是,则从下一个“事件”行分配值,否则分配NA。然后,它使用从下到上的最后一个非NA值填充缺失值。