假设我在这些标题下有一个包含很多值的数据框:
df <- data.frame(c("Tid", "Value"))
#Tid.format = %Y-%m-%d %H:%M
然后我把那个数据框交给动物园,因为我想把它当作一个时间序列来处理:
library("zoo")
df <- zoo(df$Value, df$Tid)
现在我想生成一个平滑的散点图,在一天中的哪个时间进行每次测量(即丢弃日期信息并只保留时间),据说应该这样做:https ://stat.ethz.ch/pipermail/r -help/2009-March/191302.html
但似乎 time() 函数根本不会产生任何时间。相反,它只是产生一个数字序列。无论我从该链接做什么,我都无法获得平均一天的值散点图。实际工作的 data.frame 代码(不使用动物园时间序列)如下所示(即从时间中提取小时并将其转换为数字):
smoothScatter(data.frame(as.numeric(format(df$Tid,"%H")),df$Value)
我想做的另一件事是制作一个我每小时进行多少次测量的密度图。我已经使用常规 data.frame 绘制了几个小时没有问题,所以我拥有的数据很好。但是,当我尝试使用 zoo 时,我要么得到错误,要么在尝试通过谷歌找到的结果时得到错误的结果。
我确实设法通过这条线绘制了一些东西:
plot(density(as.numeric(trunc(time(df),"01:00:00"))))
但这是不正确的。它似乎再次生成了一个从 1 到 217 的序列,我希望它截断任何日期信息并将时间四舍五入到小时。
我能够绘制这个:
plot(density(df))
这会产生值的密度图。但我想要一个关于一天中每小时记录多少个值的密度图。
所以,如果有人可以帮我解决这个问题,那就太好了。简而言之,我想做的是:
1)smoothScatter(x轴:一天中的时间(0-24),y轴:值)
2)绘图(密度(x轴:一天中的时间(0-24)))
编辑:
library("zoo")
df <- data.frame(Tid=strptime(c("2011-01-14 12:00:00","2011-01-31 07:00:00","2011-02-05 09:36:00","2011-02-27 10:19:00"),"%Y-%m-%d %H:%M"),Values=c(50,52,51,52))
df <- zoo(df$Values,df$Tid)
summary(df)
df.hr <- aggregate(df, trunc(df, "hours"), mean)
summary(df.hr)
png("temp.png")
plot(df.hr)
dev.off()
这段代码是我拥有的一些实际值。我本来希望“df.hr”的情节是每小时平均值,但我得到了一些奇怪的新索引,根本不是时间......