r - 绘制具有多个变量的时间序列图,这些变量表示数据框中的日期
问题描述
我正在尝试绘制一个时间序列类型图,其中 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
鉴于我的日期变量的特征,谁能建议我可以生成图表的任何方式?
解决方案
假设您使用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 日。
推荐阅读
- php - laravel 7无法发送没有发件人地址的消息
- android - 如何使用 com.glide.slider.library.SliderLayout 自定义指标样式?
- class - Dart Flutter:为什么终端会输出这些行?
- python - 如何在 QGraphicsScene 中定位和锚定文本?
- swift - CoreAudio:如何检测RemoteIO后面没有设备而不启动它?
- c# - 使用 NetDataContractSerializer 从 DataContract 集成到 IXmlSerializable
- python - AssertionError:视图函数映射正在覆盖现有端点函数:bot
- python - NameError:使用 dtw 时未定义名称“rabinerJuangStepPattern”
- swift - SKProduct Swift - 信息从何而来?
- javascript - Puppeteer:在 page.$eval 内执行 element.click()