【发布时间】:2016-11-21 17:51:21
【问题描述】:
我目前有一个数据框,它取自按时间顺序发生的事件的数据馈送。我想在我的数据的每一行上添加一个新列,如果先前的事件类型是 1,则对应于先前事件的 endx;如果先前的事件类型不是 1,则对应于先前事件的 x
例如
player_id <- c(12, 17, 26, 3)
event_type <- c(1, 3, 1, 10)
x <- c(65, 34, 43, 72)
endx <- c(68, NA, 47, NA)
df <- data.frame(player_id, event_type, x, endx)
df
player_id event_type x endx
1 12 1 65 68
2 17 3 34 NA
3 26 1 43 47
4 3 10 72 NA
最终结果
player_id event_type x endx previous
1 12 1 65 68 NA
2 17 3 34 NA 68
3 26 1 43 47 34
4 3 10 72 NA 47
【问题讨论】:
-
在基础 R 中,
transform(df, previous = ifelse(lag(df$event_type == 1), lag(df$endx), lag(df$x)))
标签: r if-statement dplyr transform rows