【发布时间】:2018-12-10 08:47:15
【问题描述】:
我正在尝试按照下面的代码使用另一个相关变量将 NA 填充到变量中。
test <- tibble(x = c(1,4,3,2,5,6), y = c(2,NA,6,NA,NA,5))
test <- test %>% mutate(chng = x/lag(x,1))
for(i in 1:nrow(test)){
if(is.na(test$y[i])) test$y[i] <- test$y[i - 1] * test$chng[i]
}
我可以在 dplyr 中执行相同的操作吗?我已经尝试过按行,但它似乎无法识别滞后功能。
test %>% rowwise() %>% mutate(y = ifelse(is.na(y), lag(y,1) * chng, y))
连续多个 NA 也会阻止我创建包含滞后变量的新列。
【问题讨论】:
-
我很确定您将无法放弃任何类型的
for或while循环。在y列上连续NA的情况下,您的操作取决于要完成的最后一行的迭代。