может dplyr :: lag () оставить значения нетронутыми, если не существует значения задержки - PullRequest
0 голосов
/ 25 апреля 2018

Мои данные сгруппированы по 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))

1 Ответ

0 голосов
/ 25 апреля 2018

Вам необходимо указать вектор, используемый в качестве значения по умолчанию, при условии, что лаг равен 1, используйте head(..., 1)

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