2012-07-16 3 views
1

이것은 R을 처음 사용하는 것입니다. 플로팅에 대한 요약 데이터 (최대 값 찾기)를 수행하려고합니다. Excel에서이 작업을 수행 할 수는 있지만 시간이 오래 걸리므로 동일한 작업을 반복하여 반복하므로 R 스크립트를 개발하는 것이 좋습니다. 이전 게시물을 검색해도 비슷한 문제가 발견되었지만 올바른 R 구문을 파악할 수는 없습니다. 다시 말하지만, 나는 절대적인 초보자이므로 어떤 도움도 크게 받으실 수 있습니다.기본 데이터 요약 - 날짜로 최대 값 결정

문제점 설명 : DATE/TIME (10 분 타임 스탬프)과 PRESSURE라는 두 개의 열이있는 데이터 프레임이 있습니다. 매일 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") 
+0

당신의 dataframe에 dput''호출하고 출력을 게시하시기 바랍니다. –

+2

코드를 가져온 게시물에 대한 링크가 있습니까? –

답변

0

이것은?

dat <- data.frame(date = rep(seq(1,50,2),2), value = rnorm(50)) 
head(dat) 
require(plyr) 
ddply(dat, .(date), summarise, max(value)) 
+0

이것은 @Roland가 대답 할 때와 같이 이미 datetime을 날짜로 변환 한 경우에만 작동합니다. –

+0

답변 해 주신 모든 분들께 감사드립니다. 나는 갈 길이 멀지 만 이것은 아주 좋은 출발점입니다. JW –

+0

@JoshuaUlrich True – sckott

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 
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=",")