【发布时间】:2021-12-28 04:25:30
【问题描述】:
给定一个样本数据如下:
df <- structure(list(date = structure(c(18912, 18913, 18914, 18915,
18916, 18917, 18918, 18919, 18920, 18921, 18922, 18923), class = "Date"),
value1 = c(1.115668, NA,
1.093685, NA, 1.072135, 1.06152, 1.05101, NA, NA, 1.0201,
1.01, 1), value2 = c(1.015, 1.030225, NA, NA, 1.077284, 1.093443,
1.109845, 1.126493, NA, NA, NA, 1.195618
)), row.names = c(NA, -12L), class = "data.frame")
假设我需要在value1 和value2 中插入NAs,但前提是date 在date>='2021-10-16' & date<='2021-10-20' 的日期范围内。
我使用了这段代码,但它适用于整个专栏value1。
library(zoo)
df$value1 <- na.approx(df$value1)
如何根据上面的代码实现这一点?谢谢。
【问题讨论】:
-
所以这个?
na.approx(df$value1[df$date>='2021-10-16' & df$date<='2021-10-20']) -
是的,所以我应该使用
df$value1[df$date>='2021-10-16' & df$date<='2021-10-20'] <- na.approx(df$value1[df$date>='2021-10-16' & df$date<='2021-10-20'])? -
我编辑了这个问题,使其更适合多列情况的插值 NA。请检查。
-
您可以只循环多列(如果
na.approx没有矢量化。不记得了)。所以像sapply(df[-1], function(i)na.approx(i[df$date>='2021-10-16' & df$date<='2021-10-20'])) -
您介意添加您的代码作为此问题的答案吗? @Sotos