【发布时间】:2021-07-17 17:43:18
【问题描述】:
我有以下 data.frame,模仿时间序列分析:
df <- data.frame(country = rep(c("US", "GB", "DK"), each = 18),
y = runif(54),
time = c(-8:9, 0:17, -17:0))
意思是,我有 18 年的数据,在这 18 年的某处发生了感兴趣的事件。 time 列将特定年份设置为零并酌情向前/向后计数。
我需要使每个组(美国、英国、丹麦)的大小相同,设置为可能的最大值,用NA 填充所有缺失的数据。换句话说,我需要最终的 data.frame 看起来像这样:
df2 <- data.frame(country = rep(c("US", "GB", "DK"), each = 18+17),
y = c(rep(NA, 9), df[df$country == "US",]$y, rep(NA, 8),
df[df$country == "GB",]$y, rep(NA, 17),
rep(NA, 17), df[df$country == "DK",]$y),
time = rep(-17:17, times = 3))
在实际数据中,有 176 个国家/地区,每个国家/地区的干预发生在不同年份。所以我真的不想像刚才那样硬编码它!有没有办法做到这一点,也许是dplyr?
【问题讨论】:
标签: r dplyr time-series