簡體   English   中英

在R中建立圖表(圖表):時間間隔內的中位數價格

[英]Build Graph(Plot) in R: median prices through time intervals

我有包含價格和某些拍賣結束日期的數據框。 我想檢查何時出現,例如,取決於一天中的時間,具有最小和最大價格(也包括中位數)的銷售。

更准確地說,我有數據框mtest

> str(mtest)
'data.frame':   9144 obs. of  2 variables:
$ Price      : num  178 188 228 305 202 ...
$ EndDateTime: POSIXct, format: "2015-05-25 05:00:59" "2015-05-23 00:06:01"  ...

我想建立一個圖(圖),在X軸上有30分鍾的時間內部(00:00-00:30、00:31-01:00等),在Y軸上有中位數(最大,最小價格)。
另一個想法是為每個時間間隔繪制一個簡單的直方圖,例如hist(mtest$Price, breaks=10, col="red")

我怎樣才能最好地做到這一點?

嘗試這個:

cutt=seq(from=min(mtest$EndDateTime),to=max(mtest$EndDateTime), by=30*60)
if (max(mtest$EndDateTime)>max(cutt))cutt[length(cutt)+1]=max(cutt)+30*60
mtest$tint=cut(mtest$EndDateTime,cutt)
stats=do.call(rbind,tapply(mtest[,"Price"],mtest[,"tint"],
                     function(p)c(min=min(p),median=median(p),max=max(p))))
bp=boxplot(mtest[,"Price"]~mtest[,"tint"],xaxt="n",
           col=1:length(levels(mtest$tint)))
axis(1,at=1:length(levels(mtest$tint)),labels=format.Date(levels(mtest$tint),"%Y-%m-%d %H:%M"),
     las=2,cex.axis=.5)
stats

或威爾思情節

plot(NA,ylim=range(stats),xlim=c(1,lint),type="n",xaxt="n",xlab="",ylab="")
sapply(1:3,function(z)points(stats[,z]~c(1:lint),col=z))
axis(1,at=1:lint,labels=format.Date(levels(mtest$tint),"%Y-%m-%d %H:%M"),
     las=2,cex.axis=.5)

您將擁有以下內容: 在此處輸入圖片說明在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM