我想用上一个乘以标量(例如3)替换数据框第一列中的每个缺失值
nRowsDf <- nrow(df)
for(i in 1:nRowsDf){
df[i,1] =ifelse(is.na(df[i,1]), lag(df[i,1])+3*lag(df[i,1]), df[i,1])
}
上面的代码没有给我一个错误,但也没有执行任何操作。
此外,有没有比编写循环更好的方法了?
更新和数据:
这里是数据示例。我想用上一个乘以标量(例如3)替换数据框第一列中的每个缺失值。 NA值在随后的行中。
df <- mtcars
df[c(2,3,4,5),1] <-NA
IND <- is.na(df[,1])
df[IND,1] <- df[dplyr::lead(IND,1L, F),1] * 3
以上代码的最后一行逐行完成作业(我应该运行它4次以填充缺少的4行)。如何为所有行一次?
答案 0 :(得分:1)
您应提供的您可复制的数据:
df <- mtcars
df[c(1,5,8),1] <-NA
代码:
IND <- is.na(df[,1])
df[IND,1] <- df[dplyr::lag(IND,1L, F),1] * 3
lead
。