我是R语言新手。我有由选项卡分隔的文本文件,其中包含每天的销售数据。格式类似于产品 ID、day0、day1、day2、day3 等。下面给出的输入文件部分
productid 0 1 2 3 4 5 6
1 53 40 37 45 69 105 62
4 0 0 2 4 0 8 0
5 57 133 60 126 90 87 107
6 108 130 143 92 88 101 66
10 0 0 2 0 4 0 36
11 17 22 16 15 45 32 36
我使用下面的代码来读取文件
pdInfo <- read.csv("products.txt",header = TRUE, sep="\t")
这允许读取整个文件,变量 x 是一个数据帧。我想将 data.frame x 更改为时间序列对象,以便进一步处理。在静态测试中,Dickey–Fuller 测试 (ADF) 显示错误。我尝试了下面的代码
x <- ts(data.matrix(pdInfo),frequency = 1)
adf <- adf.test(x)
error: Error in adf.test(x) : x is not a vector or univariate time series
提前感谢您的建议
最佳答案
在 R 中,时间序列通常采用“每个日期一行”的形式,其中数据采用“每个日期一列”的形式。在转换为 ts
对象之前,您可能需要转置数据。
首先转置它:
y= t(pdInfo)
然后将顶行(即产品 ID)放入行标题
colnames(y) = y[1,]
y= y[-1,] # to drop the first row
这应该有效:
x = ts(y, frequency = 1)
关于r - 在 R 中将 data.frame 转换为时间序列对象时遇到困难?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43419203/