1

私はデータ フレーム (71568x4) を持っています。これらの変数は 1 時間ごとに観測され (合計は 1 日 24 時間)、多くの NA を含んでいます。

各変数の 24 時間ごとの最大値 (つまり、毎日の最大値) を見つけたいと考えています。任意の日のこの 24 時間の間に 12 以上の時間単位の観測が欠落している場合、その日のデータは欠落していると見なされ、NA として報告されます。Rでこれを行うのを手伝ってくれる人はいますか?

次に例を示します。

tDate <- rep(c(19980101,19980102,19980103), each = 24)
tTime <- rep(seq(1:24), 3)
x1 <- c(c(1:4),rep(NA,7),c(2:10),6,2,9,1,rep(NA,4),c(4:23),c(2:8),
        rep(NA,7),c(3:5),rep(NA,7))
x2 <- c(rep(NA,3),c(11:15),NA,c(3:15),rep(NA,10),c(7:10),NA,c(2:4),NA,3,
        rep(NA,5),c(6:9),NA,c(8:20),rep(NA,5),5,1)
datmat <- cbind(tDate,tTime,x1,x2)

出力は次のようになります

> matrix(c(10,23,NA,15,NA,20), byrow = FALSE, ncol = 2)

よろしくお願いします。

4

1 に答える 1

2

必要な最大値を取るカスタム関数を定義します。

my.max <- function(vec) {
   if(length(vec[is.na(vec)])>=12) {
      return(NA) 
   } else {
      return(max(vec, na.rm=T))
   }
}

次にplyr、具体的に使用しますddply

ddply(as.data.frame(datmat), .(tDate), summarise, x1=my.max(x1), x2=my.max(x2))
于 2012-04-04T20:00:42.903 に答える