我正在尝试比较 R 中的两个时间序列,通过将它们绘制在折线图上来评估它们之间的关联程度。为了避免数据有两个单独的轴,我想为每个值创建一个索引,通过绘制索引而不是原始数据来绘制自日期 X 以来值的变化。
数据看起来像这样:
Table 1.
Month A B
Jan 3883 151831
Feb 3626 154070
Mar 4346 163550
Apr 3439 155674
期望的输出如下所示:
Table 2.
Month A A.index B B.index
Jan 3883 100 151831 100
Feb 3626 93.38 154070 101.47
Mar 4346 111.92 163550 107.71
Apr 3439 88.56 155674 102.53
我可以通过将表 1 导出到 excel 并为 A.index 和 B.index 添加一列并使用计算来确定索引号 100 的变化来在 excel 中实现这一点。假设 A 在 B 列中,然后我简单地:
=(cn)/c$2*100
其中cn为C列第n行,c$2为原值,100为索引号。
但是,我想知道如何在 R 中实现同样的事情,以便我可以将它包装在一个函数中,因为这将是我需要半定期做的事情。
干杯汤姆
最佳答案
使用 tranform()
,这非常简单。关键行实际上与 Excel 代码非常相似,应该是不言自明的。
df <- read.table(text="Month A B
Jan 3883 151831
Feb 3626 154070
Mar 4346 163550
Apr 3439 155674", header=T)
df <- transform(df, A.index=100*A/A[1], B.index=100*B/B[1])
df
# Month A B A.index B.index
# 1 Jan 3883 151831 100.00000 100.0000
# 2 Feb 3626 154070 93.38141 101.4747
# 3 Mar 4346 163550 111.92377 107.7185
# 4 Apr 3439 155674 88.56554 102.5311
关于r - 为 R 中的两个时间序列值创建索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8335943/