You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中ggmonthplot报参数行数不一致报错的原因与解决方法

问题背景
  • 使用1970-2019年车辆行驶里程月度统计数据做时间序列可视化,单条记录对应1个自然月,数据集无缺失值,CSV数据片段如下:
DATE,TRFVOLUSM227NFWA
1970-01-01,80173
1970-02-01,77442
1970-03-01,90223
1970-04-01,89956
1970-05-01,97972
1970-06-01,100035
1970-07-01,106392
1970-08-01,106969
1970-09-01,95254
1970-10-01,96317
1970-11-01,89684
1970-12-01,89911
1971-01-01,85336
1971-02-01,80118
1971-03-01,92974
1971-04-01,98106
1971-05-01,103655
1971-06-01,105433
1971-07-01,112466
1971-08-01,112642
1971-09-01,101290
1971-10-01,102525
1971-11-01,95555
1971-12-01,95515
  • 已加载依赖包:dplyr、tidyr、ggplot2、gridExtra、stats、forecast、lubridate、tseries、zoo
  • 初始实现代码如下:
library(dplyr) # data management
library(tidyr) # data management
library(ggplot2) # visualization
library(gridExtra) # combine multiple plots
library(stats) # basic statistical tools
library(forecast) # main time series analysis package
library(lubridate) # data formatting
library(tseries) # addition to forecast
library(zoo) # z-ordered observations (irregular timeseries)

data = read.csv("Travelling_Statistics.csv")
timeseries = ts(data,start=c(1970,1),frequency=12) # time series in monthly frequency from January 1970
ggmonthplot(timeseries)
  • 运行代码触发报错:

Error in data.frame(y = as.numeric(x), year = trunc(time(x)), season = as.numeric(phase)) :
arguments imply differing number of rows: 1176, 588

报错原因

ts()函数接收多列数据框作为输入时,会自动生成多列的多变量时间序列(mts)对象。原始数据包含DATE和TRFVOLUSM227NFWA两列,直接传入ts()后会得到2列的时间序列:一列是日期列被强制转换为的数值,另一列是实际的行驶里程值,总观测长度为单序列的2倍。
ggmonthplot()内部处理时,会先把所有序列值拉成一维数值向量,长度为2*588=1176,但从时间索引提取的年份、季节标签长度仅为单序列长度588,二者长度不匹配,因此触发行数不一致的报错。

修复方案

创建时间序列对象时,仅传入需要分析的数值列,排除日期列即可,修复后的代码如下:

data = read.csv("Travelling_Statistics.csv")
# 仅传入里程数值列创建ts对象
timeseries = ts(data$TRFVOLUSM227NFWA, start=c(1970,1), frequency=12)
ggmonthplot(timeseries)

运行后即可正常生成月度季节图。

内容的提问来源于stack exchange,提问作者Unreal RatzZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 17:12:28