首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将此数据转换为R中的多个时间序列对象?

如何将此数据转换为R中的多个时间序列对象?
EN

Stack Overflow用户
提问于 2020-03-09 05:26:10
回答 1查看 1.9K关注 0票数 0

我试图清理一些数据(19-covid-Confirmed.csv)有关COVID19的新冠状病毒做各种类型的分析(即。创建一个有100例病例的国家图表,或者跟踪每个国家的死亡率)。我使用数据,其中日期作为列,国家作为行。我转换了Dataframe,这样我得到了每个国家的一列和一列的日期,如下所示。

我试图通过以下代码将此数据作为时间序列对象读取:

代码语言:javascript
复制
covid19ts = ts(covid19, frequency = 365, start = c(2020,22))

结果如下。不是将日期作为我的索引列,而是从1-47(记录的天数)中得到一个数字。这导致我无法创建图表或做任何有意义的分析。

我还使用具有相同结果的lubridate包尝试了以下代码:

代码语言:javascript
复制
covid19ts = ts(covid19, frequency = 365, start= decimal_date(as.Date("2020-01-22")))

如何将我的ts日期变成实际的图表和分析日期?

还是有一个完全不同的方法,我可以使用哪一个会更好的分析,我试图做?

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2020-03-09 06:01:32

您可以将数据保存为数据并进行有用的绘图。也许能得到长格式的数据。

代码语言:javascript
复制
library(tidyverse)
df <- read.csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv', check.names = FALSE)
df1 <- df %>% pivot_longer(cols = -(1:4)) 
head(df1)

# A tibble: 6 x 6
#  `Province/State` `Country/Region`   Lat  Long name    value
#  <fct>            <fct>            <dbl> <dbl> <chr>   <int>
#1 Anhui            Mainland China    31.8  117. 1/22/20     1
#2 Anhui            Mainland China    31.8  117. 1/23/20     9
#3 Anhui            Mainland China    31.8  117. 1/24/20    15
#4 Anhui            Mainland China    31.8  117. 1/25/20    39
#5 Anhui            Mainland China    31.8  117. 1/26/20    60
#6 Anhui            Mainland China    31.8  117. 1/27/20    70

如果您想像文章中所示的那样将数据转换为时间序列,您可以这样做:

代码语言:javascript
复制
df2 <- df1 %>%
         group_by(`Country/Region`, name) %>%
         summarise(value = sum(value)) %>%
         pivot_wider(names_from = `Country/Region`, values_from = value, 
         values_fill = list(value = 0))

ts_data <- xts::xts(df2[-1], as.Date(df2$name, "%m/%d/%y"))

@G. Grothendieck依靠zoo提出的另一种解决方案是

代码语言:javascript
复制
z <- read.zoo(df1[c(2, 5:6)], index = "name", split = "Country/Region", 
              format = "%m/%d/%Y", aggregate = sum)

read.zoo避免了tidyverse的所有显式聚合和重组。然后,我们可以使用autoplot函数来绘制这个zoo对象。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60595119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档