2015-01-30 4 views
1

다음과 같이 6 개의 열로 구성된 텍스트 파일이 있습니다. 측정은 수십 년 간 (2001 ~ 2013 년) 30 회 실시됩니다. 나는 일일 평균을 계산하려고합니다. 예를 들어, 2001 년은 모든 값을 첫날 (1)로 취해 평균을 계산하고 그 해의 모든 요일과 텍스트 파일에서 사용할 수있는 모든 연도에 대해 수행합니다. 시간별 값에서 일일 평균을 계산하는 방법은 무엇입니까?

파일을 읽을 수 있습니다 :

LR=read.table("C:\\Users\\dat.txt", sep ='', header =TRUE) 

헤더 :

head(LR) 
    Year day hour mint valu1 valu2 
1 2001 1 5 30  0  0 
2 2001 1 6 0  1  0 
3 2001 1 6 30  2  0 
4 2001 1 7 0  0  7 
5 2001 1 7 30  5  8 
6 2001 1 8 0  0  0 
+4

'dplyr'을 사용할 수 있습니다; LR [-c (3 : 4)], LR [-c (3 : 4)], LR [-c (3 : 4)], 평균)' – akrun

답변

4

시도 :

library(plyr) 
ddply(LR, .(Year, day), summarize, val = mean(valu1)) 

그리고 또 다른 적은 고급 옵션 :

LR$n <- paste(LR$Year, LR$day, sep="-") 
tapply(LR$valu1, LR$n, FUN=mean) 

당신이 년 동안 사용 부분 집합의 특정 범위를 선택합니다 :

res <- aggregate(LR, by = list(paste0(dat$Year, dat$day)), FUN = mean) 
## You can remove the extra columns if you want 
res[, -c(1,4,5)] 

또는 마이클 로렌스 알 수 있듯이, 수식 인터페이스 사용 :

dat < ddply(LR, .(Year, day), summarize, val = mean(valu1)) 
subset(dat, Year > 2003 & Year < 2005) 
+0

당신을 도울 수있어서 기쁩니다! 방금 답장 상자에 넣었습니다. –

2

당신은 aggregate 시도 할 수

aggregate(cbind(valu1, valu2) ~ Year + day, LR, mean) 
+2

또는 수식 인터페이스 :'aggregate (cbind (valu1, valu2) ~ Year + day, LR, mean) ' –

+0

... 이해하는 사람에게는 더 깨끗합니다. – alko989

관련 문제