簡體   English   中英

根據多年數據生成年度頻率圖

[英]Generating yearly frequency plot from multi-year data

我有以下格式的每小時風速數據

DT,DIR,SPEED                                                                                                                               
2002/01/01 00:00,***,0.0
2002/01/01 03:00,360,0.89408
2002/01/01 06:00,070,4.91744
2002/01/01 09:00,050,4.4704
2002/01/01 15:00,050,2.2352
2002/01/01 18:00,050,3.12928
2002/01/01 21:00,020,0.89408

從2002年到2012年的每三個小時記錄一次數據點到三個小時內記錄一次數據點開始,如下所示:

2012/12/31 00:00,***,0.0
2012/12/31 00:10,***,0.0
2012/12/31 00:40,***,0.0
2012/12/31 01:10,***,0.0
2012/12/31 01:40,***,0.0
2012/12/31 02:10,***,0.0
2012/12/31 02:40,***,0.0
2012/12/31 03:00,***,0.0
2012/12/31 03:10,310,2.2352
2012/12/31 03:40,060,4.02336
2012/12/31 04:40,060,3.12928
2012/12/31 05:10,070,4.91744

我正在嘗試使用R創建年度頻率圖,以顯示SPEED與小時數。我嘗試使用直方圖,但是點數不相等,並且當然不能完全代表小時數。 如何解決呢?

注意:不使用DIR值, *也視為不適用

您可以使用approx()函數估計每小時的速度,然后使用這些估計的每小時速度來創建直方圖。 例如,假設您的數據幀稱為df ,...

library(lubridate)
# date/time as class POSIXct
df$DT2 <- ymd_hm(df$DT)

# create a new data frame, everyhour, with every hour between the first and the last in df
everyhour <- data.frame(DT2=seq(ceiling_date(min(df$DT2), "hour"), floor_date(max(df$DT2), "hour"), 3600), FORHIST=TRUE)

# merge the observed data with the everyhour data
df2 <- merge(df, everyhour, all=TRUE)
# set missing FORHIST to FALSE
df2$FORHIST[is.na(df2$FORHIST)] <- FALSE
# define year
df2$YEAR <- year(df2$DT2)
# estimate speed for everyhour
df2$estSPEED <- approx(x=df2$DT2, y=df2$SPEED, xout=df2$DT2, method="linear")$y

# plot annual histograms of hourly speeds
suy <- sort(unique(df2$YEAR))
par(mfrow=n2mfrow(length(suy)), mar=c(3, 3, 2, 1), oma=c(2, 2, 0, 0))
for(i in seq(suy)) {
    sel <- df2$YEAR==suy[i] & df2$FORHIST==TRUE
    hist(df2$estSPEED[sel], xlab="", ylab="", main=suy[i])
    }
mtext("Speed", side=1, outer=TRUE)
mtext("Frequency", side=2, outer=TRUE)

暫無
暫無

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

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