我有一个具有以下形式的大型数据集:
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方法且无需加入即可做到这一点。
谢谢。
答案 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值填充缺失值。