首页 > 解决方案 > 绘制具有多个变量的时间序列图,这些变量表示数据框中的日期

问题描述

我正在尝试绘制一个时间序列类型图,其中 x 轴为日期,y 轴为平均温度值。我正在使用的数据框有两个单独的变量表示日期:

year包含整数值,例如 1941、1942 等。
month是具有 12 个级别的因子变量,包含 'January'、'February'...'December'

这是使用 dput 的数据集的剪辑,抱歉不知道如何格式化才能在此处查看。

structure(list(year = c(1941L, 1941L, 1942L, 1942L, 1942L), month = structure(c(11L, 
12L, 1L, 2L, 3L), .Label = c("January", "February", "March", 
"April", "May", "June", "July", "August", "September", "October", 
"November", "December"), class = "factor"), meant = c(6.9, 6.5, 
4.3, 2.9, 6.3)), row.names = c(NA, 5L), class = c("WeatherData", 
"data.frame"))

到目前为止,我已经尝试将year和转换month为字符变量,将两个字符变量粘贴到单个字符变量中yrmonth,然后将此变量从字符类型转换为日期类型,以便plot()函数可以以正确的格式绘制日期。

# convert integer and factor variable to character variable
df$month <- as.character(df$month)
df$year <- as.character(df$year)

# for loop to paste two character variables to yrmonth
yrmonth <- vector(length = length(df$year))
for(i in 1:length(df$year)){
  yrmonth[i] <- (paste(df$month[i], df$year[i]))
}
df$yrmonth <- yrmonth

# convert yrmonth to date format
df$yrmonth  <- parse_date_time(yrmonth, orders = c('bdy', 'bY' ))

plot(df$yrmonth, df$meant, type = 'l')

作为df$meant具有整数值的变量,我希望生成时间序列图。当我执行上面的代码时,我得到一个错误 error in plot.window(...) : Need finite 'xlim' values

鉴于我的日期变量的特征,谁能建议我可以生成图表的任何方式?

标签: rdatetime-serieslubridate

解决方案


假设您使用lubridate包,您可以比这更容易构建日期:

df$date = paste(rep(15, nrow(df)), df$month, df$year, sep="/")
# check that date column contains valid dates as strings
df$date = dmy(df$date)
# check that dates have been converted correctly

为了获得有效日期,我将日期设置为每个月的 15 日。


推荐阅读