r - 数学和 rbind 与 zoo 对象
问题描述
我有一个包含三列的动物园对象。我想计算每列的成对差异,以获得随时间的相对变化。我为此使用了for循环。但是,我返回的不再是 zoo 对象,而是普通的 data.frame。
当我想在多个面板中绘制它时,我会松开我的 x 轴时间标签。当我尝试将数据框转换回动物园对象时,出现“错误条目”错误
head(zoo.2017)
zoo1 zoo2 zoo3
2017-01-01 104.6066 106.6240 112.7336
2017-01-02 103.1034 104.4088 111.8473
2017-01-03 103.4550 107.0606 111.4292
2017-01-04 101.6916 108.0550 111.8183
2017-01-05 101.8274 105.1528 114.3505
2017-01-06 102.9502 107.1381 113.8313
delta<-zoo()
for(n in 2:length(zoo.2017[,1])){
diff<-as.data.frame(zoo.2017[n,])-as.data.frame(zoo.2017[n-1,])
delta<-rbind(delta, diff)
}
head(delta)
Maui6 Olowalu Pali
diff -1.503264 -2.215139 -0.8862847
2017-01-03 0.3516667 2.651771 -0.4180556
2017-01-04 -1.763472 0.9944444 0.3890625
2017-01-05 0.1358681 -2.902257 2.532153
2017-01-06 1.122743 1.985313 -0.5191319
2017-01-07 1.430937 0.5648958 -0.01836806
我知道错误可能来自 for 循环中的 as.data.frame(),但我不知道如何计算它。之后当我在数据帧上尝试 read.zoo() 时,它给了我错误的条目错误......
我在动物园里仍然很难过
解决方案
如果z
动物园对象在最后的注释中可重复地定义,那么要在每列使用中获得连续的差异diff.zoo
zd <- diff(z)
给这个动物园对象:
> zd
zoo1 zoo2 zoo3
2017-01-02 -1.5032 -2.2152 -0.8863
2017-01-03 0.3516 2.6518 -0.4181
2017-01-04 -1.7634 0.9944 0.3891
2017-01-05 0.1358 -2.9022 2.5322
2017-01-06 1.1228 1.9853 -0.5192
关于绘图,我们现在可以使用以下任何一种来绘制它:
plot(zd)
library(ggplot2)
autoplot(zd)
library(lattice)
xyplot(zd)
zoo 附带了几个小插图(pdf 文档)和参考手册,您可以阅读以获取更多信息。
笔记
Lines <- "date,zoo1,zoo2,zoo3
2017-01-01,104.6066,106.6240,112.7336
2017-01-02,103.1034,104.4088,111.8473
2017-01-03,103.4550,107.0606,111.4292
2017-01-04,101.6916,108.0550,111.8183
2017-01-05,101.8274,105.1528,114.3505
2017-01-06,102.9502,107.1381,113.8313"
library(zoo)
z <- read.csv.zoo(text = Lines)
推荐阅读
- karate - 如何在空手道框架中使用 for 循环登录
- c# - 将xml序列化为c#对象
- mysql - 分层数据库结构的问题
- python - 删除包含文档的数据框中的页眉、页脚和引号
- java - 如何从 Bean 定义中访问 Bean Id
- macos - 如何使 objdump 从 macOS Catalina 上的指定起始地址反汇编?
- android - PanResponder 组件中的 ScrollView
- c# - C# 设置/创建 DateTaken 参数
- javascript - Uncaught Invariant Violation:目标容器不是 DOM 元素。我也在视图文件中添加了
- java - 为什么当我在 NetBeans 中运行 wathever 程序时,system.out.println() 的一部分会被视为未识别的类