1

R を使用するのはこれが初めてです。プロットのためにいくつかの基本的なデータの要約 (最大値の検索) を実行しようとしています。これは Excel で実行できますが、時間がかかります。また、同じことを何度も繰り返しているため、R スクリプトを開発することは非常に理にかなっています。以前の投稿を検索したところ、同様の問題が見つかりましたが、正しい R 構文がわかりません。繰り返しますが、私はまったくの初心者なので、どんな助けでも大歓迎です。

問題の説明: DATE/TIME (10 分のタイム スタンプ) と PRESSURE の 2 つの列を持つデータ フレームがあります。毎日の PRESSURE の最大値を決定する必要があります。

     DateAndTime   Pressure
1  8/1/2011 0:06 0.06119370

2  8/1/2011 0:16 0.06003765

3  8/1/2011 0:26 0.06118049

以前の投稿から以下のコードを変更しようとしましたが (「which.max」部分を削除しようとしました)、成功しませんでした。

for (imonth in 1:12) {

    month <- which(data[,2]==imonth) 
    monthly_max[imonth] <- max(data[month,3]) 
    maxi[imonth] <- which.max(data[month,3]) 
} 
tabela <- cbind(monthly_max, maxi) 
write.table(tabela, col.names=TRUE, row.names=TRUE, append=FALSE, sep="\t") 
4

3 に答える 3

1

xtsやzooなどの時系列クラスを使用することをお勧めします。

# create some data that looks like the OP's
NOW <- .POSIXct(1342460400)
d <- data.frame(DateAndTime=format(NOW+seq(0,3600*72,600), "%Y-%m-%d %H:%M"))
d$Pressure <- runif(NROW(d))/10

library(xts)  # load the xts package
# create an xts object from the OP's data.frame
x <- xts(d["Pressure"], as.POSIXct(d$DateAndTime))
# apply the max function to each day
dx <- apply.daily(x, max)
#                       Pressure
# 2012-07-16 23:50:00 0.09872622
# 2012-07-17 23:50:00 0.09947256
# 2012-07-18 23:50:00 0.09932375
# 2012-07-19 12:40:00 0.09971159
于 2012-07-16T17:46:12.247 に答える
1
#creating some data for demonstration purpose
time1 <- seq(from=as.POSIXct("2011-01-08 00:06:00"),to=as.POSIXct("2011-01-18 00:06:00"),by="10 min")
DateAndTime <- format(time1,"%d/%m/%Y %H:%M")
Pressure <- rnorm(length(DateAndTime),0.06,0.01)
DF <- data.frame(DateAndTime,Pressure)

#look at first lines
head(DF)

#convert character in datetime format
DF$DateAndTime2 <- strptime(DF$DateAndTime,"%d/%m/%Y %H:%M",tz="GMT")
DF$Days <- trunc(DF$DateAndTime2,"days")

#create the summary
require(plyr)
summaryDF <- ddply(DF,.(Days),summarise,max(Pressure))
names(summaryDF)<-c("Day","Maximum")

#write to CSV file, which can be read into Excel
write.table(summaryDF,file="output.csv",col.names=TRUE,row.names=FALSE,dec=".",sep=",")
于 2012-07-16T18:00:35.987 に答える
0

これ?

dat <- data.frame(date = rep(seq(1,50,2),2), value = rnorm(50))
head(dat)   
require(plyr)
ddply(dat, .(date), summarise, max(value))
于 2012-07-16T17:40:39.110 に答える