Я использую tidyr::complete()
для включения отсутствующих строк в кадре данных со многими столбцами, что приводит к значениям NA. Как я могу указать параметр fill
для замены значений NA на 0, если у меня нет явного списка имен столбцов?R/tidyr :: complete - заполнение отсутствующих значений динамически
Пример:
df <- data.frame(year = c(2010, 2013:2015),
age.21 = runif(4, 0, 10),
age.22 = runif(4, 0, 10),
age.23 = runif(4, 0, 10),
age.24 = runif(4, 0, 10),
age.25 = runif(4, 0, 10))
# replaces missing values with NA - not what I want
df.complete <- complete(df, year = 2010:2015)
# replaces missing values with 0 - works, but needs explicit list
df.complete <- complete(df, year = 2010:2015, fill = list(age.21 = 0, age.22 = 0,
age.23 = 0, age.24 = 0,
age.25 = 0))
# throws error (is.list(replace) is not TRUE)
df.complete <- complete(df, year = 2010:2015, fill = 0)
# replaces missing values with NA - not what I want
df.complete <- complete(df, year = 2010:2015, fill = list(rep(0,6)))
Обходной может быть использование df.complete[is.na(df.complete)] <- 0
, но это несет опасность замены слишком много значений.