我正在研究时间数据 数据包括与年份相关的频率值。
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))
答案 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