2014-06-23 2 views
1

데이터 세트의 여러 날 동안 매일 일정한 값 집합에서 일일 평균을 계산하려고합니다. 내 일이 내가 원하는 없지만 내가 요소로했던 것처럼이 날짜가 더 이상 시간 순서대로 정확히이 나에게주는 요인tapply()를 strptime() 형식의 날짜와 함께 사용

> Data$Data <- as.factor(Data$Date) 
    > str(Data$Date) 
    Factor w/ 55 levels "01/05/2014","02/05/2014",..: 3 3 3 3 3 3 3 3 3 3 ... 
    > tapply(Data$Humidity,Data$Date, FUN = mean) 
    01/05/2014 02/05/2014 03/04/2014 03/05/2014 04/04/2014 04/05/2014 05/04/2014 05/05/2014 06/04/2014 
    99.96875 100.00000 96.65833 99.80625 84.14375 89.56042 93.75833 39.58750 87.55000 

때 tapply는(), 중대하다.

는 대신에 나는

> Data$Date<-strptime(Data$Date, format="%d/%m/%Y") 
    > str(Data$Date) 
    POSIXlt[1:2586], format: "2014-04-03" "2014-04-03" "2014-04-03" "2014-04-03" "2014-04-03" "2014-04-03" ... 
    > tapply(Data$Humidity,Data$Date, FUN = mean) 
    Error in INDEX[[i]] : subscript out of bounds 

.... 처음부터 다시 시작 R.에 의해 인식 날짜 형식으로 strptime()를 사용하여 시도하지만 난 그냥 다음과 같은 오류 메시지가? 아무도 왜 이것이 작동하지 않는지 알고 있습니까? 당신이 tapply

tapply(Data$Humidity,factor(Data$Date), FUN = mean) 

tapply 함수는 요소를 필요로 할 때

답변

0

나는 또한 단순히 (A dataframe를 통해 이후) (strptime하는 tapply() 출력을 변경할 수 있다는 것을 발견) 오히려 전에 그것을하는 것보다 , 날짜순으로 주문()

Data$Date <- as.factor(Data$Date) 
    DAVEH <- tapply(Data$Humidity,Data$Date, FUN = mean) 

    site.daily<-data.frame(c(names(DAVEH)),c(DAVEH)) 
    rownames(site.daily)<-seq_len(nrow(site.daily)) 
    colnames(site.daily)<-c("Date","DAVEH") 

    site.daily$Date<-strptime(site.daily$Date, format="%d/%m/%Y") 

    site.daily<-site.daily[order(site.daily$Date),] 
    rownames(site.daily)<-seq_len(nrow(site.daily)) # again as they have been re-ordered 

    > site.daily 
    Date  DAVEH 
1 2014-04-03 96.65833 
2 2014-04-04 84.14375 
3 2014-04-05 93.75833 
4 2014-04-06 87.55000 
5 2014-04-07 58.87708 
6 2014-04-08 99.83542 
7 2014-04-09 87.68125..... 

등등.

0

당신은 요인에 날짜를 변환 할 수 있습니다.

1

tapply 기능과 같은 요소가 필요없는 dplyr과 같은 패키지를보고 싶을 수도 있습니다. =>http://cran.r-project.org/web/packages/dplyr/dplyr.pdf

구문처럼 될 것

,

DF <- your data frame 
gb <- group_by(DF, Date) 
DF <- mutate(gb, Mean_Humidity = mean(Humidity) 
DF <- arrange(DF, date)