R:如何在每月数据中填充年度数据?

时间:2018-12-06 11:04:43

标签: r dataframe fill quandl

我正在尝试使用collapse = "monthly"从Quandl加载数据。 其中一些值仅按年度或半年一次提供。 其他一些值仅在特定时间段内可用。 这给我留下了很多不均匀的数据。 我该如何以“上一次观察结转”的方式填写年度和半年数据,并用NA填充其余0

这是我对获得的数据以及最后要获得的数据的想法:

library(tibble)

set.seed(4711)

# How do I get from:
#
df.start <- data_frame(
  Date = seq.Date(as.Date("1990-01-01"), as.Date("1999-12-01"), "1 month"),
  B = rep(NA, 120),
  C = c(rep(NA, 50), rnorm(120 - 50)),
  D = rep(c(rnorm(1), rep(NA, 11)), 10),
  E = c(rep(NA, 24), rep(c(rnorm(1), rep(NA, 11)), 8)),
  F = c(rep(NA, 45), rnorm(50), rep(NA, 25)),
  G = c(rep(NA, 24), rep(c(rnorm(1), rep(NA, 11)), 6), rep(NA, 24)),
  H = c(rep(NA, 10), rnorm(20), rep(NA, 16), rnorm(37), rep(NA, 37)),
  I = rep(c(rnorm(1), rep(NA, 5)), 20)
)
#
# To:
#
df.end <- data_frame(
  Date = seq.Date(as.Date("1990-01-01"), as.Date("1999-12-01"), "1 month"),
  B = rep(0, 120),
  C = c(rep(0, 50), rnorm(120 - 50)),
  D = rep(rnorm(10), each = 12),
  E = c(rep(0, 24), rep(rnorm(8), each = 12)),
  F = c(rep(0, 45), rnorm(50), rep(0, 25)),
  G = c(rep(0, 24), rep(rnorm(6), each = 12), rep(0, 24)),
  H = c(rep(0, 10), rnorm(20), rep(0, 16), rnorm(37), rep(0, 37)),
  I = rep(rnorm(20), each = 6)
)
#
# Automatically?
#

1 个答案:

答案 0 :(得分:0)

您可以使用fill用最后一个非空值(NAs列除外)填充Date,然后用replace填充剩余的{{1 }}按0。我们按年份分组进行这些操作。

NAs