当不存在滞后值时,dplyr::lag()能否保持值不变

当不存在滞后值时,dplyr::lag()能否保持值不变,r,dplyr,lag,R,Dplyr,Lag,我的数据按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

我的数据按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))

您需要将用作默认值的向量子集-假设滞后为1,使用head…,1

  ds %>% 
    group_by(mpg) %>% 
    mutate(hp = lag(hp, default = hp))
ds %>% 
  group_by(mpg) %>% 
  mutate(hp = lag(hp, default = head(hp, 1)))