首页 > 解决方案 > 如何编写循环时间序列的 r 代码?

问题描述

我有两列的数据集,年份和温度。

Year     Temperature
1869     51.4
1870     53.6
1871     51.1
1872     51.0
1873     51.0
1874     51.3
1875     49.4
1876     51.9
1877     52.8
1878     53.6
1879     52.3
1880     53.2
1881     52.4
1882     52.0
1883     50.5
1884     52.4
1885     51.1
1886     51.0
1887     50.9
1887     49.3

我需要编写一个 r 脚本来计算每年的平均百分比变化,将输出与原始数据一起绘制并打印出来。

例如,1873 年的平均百分比变化 =(((从 1874 年到 1878 年的平均值 - 从 1869 年到 1873 年的平均值)/从 1874 年到 1878 年的平均值)*100 我需要对 1874 年到 1884 年重复此操作,在 csv 文件中打印出来并与原始数据一起绘制为时间序列。

我不确定从这里开始,欢迎任何想法或建议。

标签: rfor-looptime-seriescalculated-columns

解决方案


使用图书馆(动物园)我们可以做

l = rollmean(head(x, -5)[,2], 5)
r = rollmean(tail(x, -5)[,2], 5)
percent_change = 100 * (r-l)/r
# [1]  0.3474903  0.7692308  3.7907506  3.6700719  2.6944972  0.5376344  0.1919386 -2.0897833 -2.8404669
#[10] -2.9699101 -2.2379270

数据:

x = structure(list(Year = c(1869, 1870, 1871, 1872, 1873, 1874, 1875, 
1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 
1887, 1887), Temp = c(51.4, 53.6, 51.1, 51, 51, 51.3, 49.4, 51.9, 
52.8, 53.6, 52.3, 53.2, 52.4, 52, 50.5, 52.4, 51.1, 51, 50.9, 
49.3)), class = "data.frame", row.names = c(NA, -20L))

推荐阅读