r - 如何编写循环时间序列的 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 文件中打印出来并与原始数据一起绘制为时间序列。
我不确定从这里开始,欢迎任何想法或建议。
解决方案
使用图书馆(动物园)我们可以做
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))
推荐阅读
- tensorflow - Google Colab 和 GPU 中的教程出错:“无法获得卷积算法”
- node.js - 使用 nodemailer 在 Node.JS 中发送电子邮件(错误:554 6.6.0 发送消息以进行传递时出错)
- extjs - Extjs 7.4 Modern Tree Grid Checkboxes on child level only
- bash - 如何迭代多个变量并使用 Shell 脚本回显它们?
- javascript - 使用 Flask、jinja2、python 和 js 动态加载 html 表
- python - 在 Python 中重新实现 Eigen 旋转矩阵到四元数的转换
- sql - 仅更新时间戳 postgresql 中的时间
- c++ - 将对象插入不允许复制构造函数的 std::deque
- azure - Azure 数据工厂和 Power Query
- doctrine-orm - 更新号码表单域