如何完成缺少年份和空值的时间序列?

时间:2016-01-06 20:52:22

标签: r dataframe time-series dplyr

我正在研究时间数据 数据包括与年份相关的频率值。

data <- data.frame(year = c(1789,1791, 1795),
               Freq =  c(12, 56, 67)) 

我的问题: 有些年头不见了 我的期望:
我希望在我的data.frame中添加缺少的年份,使用空值(使用dplyr或base)

year Freq
1 1789    12
2 1790    0
3 1791    56
4 1792    0
5 1793    0
6 1794    0
7 1795    67

我的想法:创建一个包含所有年份(包括零值)的表,并将其与我的数据合并......

data2 <- data.frame (year = c(1789:1795), Freq = rep(0, 7))

2 个答案:

答案 0 :(得分:3)

你的想法很有道理。使用plyr的方法可行:

df1 <- join(data.frame(year = 1789:1795), df)  #Left join df years to all years 
df1[is.na(df1$Freq), "Freq"] <- 0              #Set NA to 0

答案 1 :(得分:2)

使用dplyr和left_join的方法:

 library(dplyr)

 data <- data.frame(year = c(1789,1791, 1795),
               Freq =  c(12, 56, 67)) 


 data2 <- data.frame (year = c(1789:1795)) # , Freq = rep(0, 7)



 all<- left_join(data2, data)

 all