【发布时间】:2018-09-13 13:01:27
【问题描述】:
我有一个数据框 df,其中有一列包含值(仪表读数)。某些值偶尔会丢失 (NA)。
df 摘录:
row time meter_reading
1 03:10:00 26400
2 03:15:00 NA
3 03:20:00 27200
4 03:25:00 28000
5 03:30:00 NA
6 03:35:00 NA
7 03:40:00 30000
我正在尝试做的事情:
如果只有一个连续的 NA,我想插值(例如第 2 行的 na.interpolation)。 但是如果有两个或多个连续的 NA,我不希望 R 进行插值并将值保留为 NA。 (例如第 5 行和第 6 行)。
到目前为止,我尝试的是带有 if 条件的循环 (for...)。我的做法:
library("imputeTS")
for(i in 1:(nrow(df))) {
if(!is.na(df$meter_reading[i]) & is.na(df$meter_reading[i-1]) & !is.na(df$meter_reading[i-2])) {
na_interpolation(df$meter_reading)
}
}
给我:
Error in if (!is.na(df$meter_reading[i]) & is.na(df$meter_reading[i - :
argument is of length zero
任何想法如何做到这一点?我在这里完全错了吗?
谢谢!
【问题讨论】:
-
仅供参考,
ifelse已矢量化
标签: r loops if-statement interpolation imputets