如何用 R 中数字列中的序列填充缺失的 NA
How to fill missing NA's with sequence in numeric column in R
示例数据:week = c(0,1,2,3,4,NA,6,NA,NA,NA,10)
我目前使用的解决方案是:
ifelse(is.na(week),na.locf(week)+1,week)
但它输出:0 1 2 3 4 5 6 7 7 7 10
期望输出:0 1 2 3 4 5 6 7 8 9 10
任何帮助将不胜感激,提前致谢!
使用 purrr
您可以尝试以下操作。如果缺少 (NA
) 则增加 1,否则,保留该值。
library(purrr)
accumulate(week, ~ifelse(is.na(.y), .x + 1, .y))
输出
[1] 0 1 2 3 4 5 6 7 8 9
zoo
包有一个特定用途的函数:na.spline
。
week = c(0,1,2,3,4,NA,6,NA,NA,NA,10)
zoo::na.spline(week)
# [1] 0 1 2 3 4 5 6 7 8 9 10
示例数据:week = c(0,1,2,3,4,NA,6,NA,NA,NA,10)
我目前使用的解决方案是:
ifelse(is.na(week),na.locf(week)+1,week)
但它输出:0 1 2 3 4 5 6 7 7 7 10
期望输出:0 1 2 3 4 5 6 7 8 9 10
任何帮助将不胜感激,提前致谢!
使用 purrr
您可以尝试以下操作。如果缺少 (NA
) 则增加 1,否则,保留该值。
library(purrr)
accumulate(week, ~ifelse(is.na(.y), .x + 1, .y))
输出
[1] 0 1 2 3 4 5 6 7 8 9
zoo
包有一个特定用途的函数:na.spline
。
week = c(0,1,2,3,4,NA,6,NA,NA,NA,10)
zoo::na.spline(week)
# [1] 0 1 2 3 4 5 6 7 8 9 10