【问题标题】:How to complete time series with missing years and null values?如何完成缺少年份和空值的时间序列?
【发布时间】:2016-04-11 02:21:56
【问题描述】:

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

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))

【问题讨论】:

  • 问题末尾的“想法”说明了一个有效的解决方案。我看不出向 Stackoverflow 观众提问的意义。

标签: r dataframe time-series dplyr


【解决方案1】:

你的想法是有道理的。这种使用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 查看我的解决方案
【解决方案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

【讨论】:

  • 这与@oshun 的回答有何不同?
猜你喜欢
  • 1970-01-01
  • 2019-09-22
  • 2022-12-18
  • 1970-01-01
  • 2021-07-20
  • 2016-04-05
  • 2015-01-05
  • 2016-08-03
  • 2022-08-23
相关资源
最近更新 更多