我们有101个变量(公司)的收盘价。我们得到了很多NA值(因为股票市场在星期六和星期日关闭 - >在我们的数据中给出了NA值)并且如果有先前的价值我们需要用前一个值来估算那些NA值但是我们不成功。 This is our data example
也有一些公司在头几年没有数据,因为他们不在股票市场,所以他们在这个时期有NA值。有些公司破产并开始拥有NA值,因此这些都应该变为0。 我们应该如何做到这一点,因为我们有几个条件来填补我们的NA
提前致谢。
答案 0 :(得分:0)
我对规则的理解是:
为了尝试这一点,我们使用内置数据框BOD
将第一行,第三行和最后一行替换为NA
并添加一列NA
值 - 请参阅注释结束。
我们定义一个逻辑向量ok
,每列有一个元素,TRUE
用于列中至少有一个元素不是NA
而FALSE
用于其他列。然后仅对ok
为TRUE
的列进行操作,我们使用NA
使用0
填充尾随的na.fill
值。然后我们使用na.locf
填充内部NA
值。
library(zoo)
ok <- !apply(is.na(BOD), 2, all)
BOD[, ok] <- na.locf(na.fill(BOD[, ok], c(NA, NA, 0)), na.rm = FALSE)
,并提供:
Time demand X
1 NA NA NA <-- leading NA values are left intact
2 2 10.3 NA
3 2 10.3 NA <-- interior NA values are filled in with last non-NA value
4 4 16.0 NA
5 5 15.6 NA
6 0 0.0 NA <- trailing NA values are filled in with 0
我们使用了以下输入:
BOD[c(1, 3, 6), ] <- NA
BOD <- cbind(BOD, X = NA)
修正。