程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何将时间序列数据填充到数据框中?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何将时间序列数据填充到数据框中??

开发过程中遇到如何将时间序列数据填充到数据框中?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何将时间序列数据填充到数据框中?的解决方法建议,希望对你解决如何将时间序列数据填充到数据框中?有所启发或帮助;

我正在处理以下时间序列数据:

Weeks <- c("1995-01","1995-02","1995-03","1995-04","1995-06","1995-08","1995-10","1995-15","1995-16","1995-24","1995-32")
Country <- c("United States")
Values <- sample(seq(1,500,1),length(Weeks),replace = T)

df <- data.frame(Weeks,Country,Values)

     Weeks       Country Values
1  1995-01 United States    193
2  1995-02 United States    183
3  1995-03 United States    402
4  1995-04 United States     75
5  1995-06 United States    402
6  1995-08 United States    436
7  1995-10 United States     97
8  1995-15 United States    445
9  1995-16 United States    336
10 1995-24 United States     31
11 1995-32 United States    413

根据年份和当年的周数(第 1 列)进行结构化。请注意,有些周是如何被省略的(作为聚合函数的结果)。例如,不包括 1995-05。如何将省略的行包含到数据中,添加适当的国家/地区名称,并为其分配值 = 0?

感谢您的帮助!

解决方法

separate 不同列中的年和周值。对于每个 CountryYears,我们complete 缺少的周和 assign Values 为 0。最后 unite 年和周列以获取数据与原始格式相同。

library(dplyr)
library(tidyr)

df %>%
  separate(Weeks,c('Years','Weeks'),sep = '-',convert = TRUE) %>%
  group_by(Country,Years) %>%
  complete(Weeks = min(Weeks):max(Weeks),fill = list(Values = 0)) %>%
  ungroup() %>%
  mutate(Weeks = sprintf('%02d',Weeks)) %>%
  unite(Weeks,Years,Weeks,sep = '-')

#   Country       Weeks   Values
#   <chr>         <chr>    <dbl>
# 1 United States 1995-01    354
# 2 United States 1995-02    395
# 3 United States 1995-03    408
# 4 United States 1995-04    143
# 5 United States 1995-05      0
# 6 United States 1995-06    481
# 7 United States 1995-07      0
# 8 United States 1995-08     49
# 9 United States 1995-09      0
#10 United States 1995-10    229
# … with 22 more rows

大佬总结

以上是大佬教程为你收集整理的如何将时间序列数据填充到数据框中?全部内容,希望文章能够帮你解决如何将时间序列数据填充到数据框中?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: