如何完成缺少年份和空值的时间序列?
How to complete time series with missing years and null values?
我正在处理时间数据。
数据包括与年份相关的频率值。
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
我的想法:创建一个 table 包含所有年份(包括零值),并将其与我的数据合并 ...
data2 <- data.frame (year = c(1789:1795), Freq = rep(0, 7))
你的想法很有道理。这种使用 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
使用 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
我正在处理时间数据。
数据包括与年份相关的频率值。
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
我的想法:创建一个 table 包含所有年份(包括零值),并将其与我的数据合并 ...
data2 <- data.frame (year = c(1789:1795), Freq = rep(0, 7))
你的想法很有道理。这种使用 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
使用 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