Я пытался использовать is.na()
в mutate_if()
, но получаю ошибку:
Ошибка в is_logical (.p): объект 'n_day' не найден
n_day
действительно в моем фрейме данных, и я подумал из-за набора аргументов is.na()
, что я не могу использовать его в mutate_if()
, но я не знаю, как его решить.
Вот Идея, если значение в n_day
равно NA
, замените его значением в n_cum
в тот же день.
Любая помощь будет высоко оценена!
Мой код такой :
library(tidyverse)
t <- structure(list(city = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("a", "b"), class = "factor"),
time = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 1L, 2L,
3L, 4L, 5L, 6L, 7L, 8L), .Label = c("2012/1/1", "2012/1/2",
"2012/1/3", "2012/1/4", "2012/2/1", "2012/2/2", "2012/2/3",
"2012/2/4"), class = "factor"), n_cum = c(1L, 2L, 3L, 4L,
5L, 6L, 7L, 8L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L)), class = "data.frame", row.names = c(NA,
-16L))
t
t2 <- t %>% group_by(city) %>%
mutate(n_day = n_cum - lag(n_cum))
t2 %>% mutate_if(is.na(n_day), n_day = n_cum)