我的数据按mpg分组,我想根据先前的hp值更新hp中的值,但我不希望第一种情况(缺少先前值)变为NA。我想第一个保留其价值的案例。
ds <- structure(list(mpg = c(10.4, 10.4, 15.2, 15.2, 19.2, 19.2, 21,
21), hp = c(205, 215, 180, 150, 123, 175, 110, 110)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -8L), .Names = c("mpg",
"hp"))
ds %>%
group_by(mpg) %>%
mutate(hp = lag(hp))
失败soln:默认参数不能设置为变量值。
ds %>%
group_by(mpg) %>%
mutate(hp = lag(hp, default = hp))
答案 0 :(得分:1)
您需要将用作默认值的向量进行子集化 - 假设滞后为1,请使用head(..., 1)
ds %>%
group_by(mpg) %>%
mutate(hp = lag(hp, default = head(hp, 1)))