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

我试图通过以下代码将此数据作为时间序列对象读取:
covid19ts = ts(covid19, frequency = 365, start = c(2020,22))结果如下。不是将日期作为我的索引列,而是从1-47(记录的天数)中得到一个数字。这导致我无法创建图表或做任何有意义的分析。

我还使用具有相同结果的lubridate包尝试了以下代码:
covid19ts = ts(covid19, frequency = 365, start= decimal_date(as.Date("2020-01-22")))如何将我的ts日期变成实际的图表和分析日期?
还是有一个完全不同的方法,我可以使用哪一个会更好的分析,我试图做?
谢谢你的帮助。
发布于 2020-03-09 06:01:32
您可以将数据保存为数据并进行有用的绘图。也许能得到长格式的数据。
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如果您想像文章中所示的那样将数据转换为时间序列,您可以这样做:
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提出的另一种解决方案是
z <- read.zoo(df1[c(2, 5:6)], index = "name", split = "Country/Region",
format = "%m/%d/%Y", aggregate = sum)read.zoo避免了tidyverse的所有显式聚合和重组。然后,我们可以使用autoplot函数来绘制这个zoo对象。
https://stackoverflow.com/questions/60595119
复制相似问题