2014-06-22 3 views
1

24 시간 동안 여러 매개 변수가 포함 된 xts 객체가 있습니다 (매분 측정). 시간을 기준으로 '아침', '오후', '저녁'및 '밤'과 같은 4 가지 '시간대'옵션으로 열 그룹을 추가했습니다.R - xts 객체의 모든 열에 대한 요약 통계를 데이터 프레임으로 직접 또는 처음으로 추출

전체 기간 및 시간 ('tod')에 대한 열 (매개 변수)의 평균값과 표준 편차를 추출하고 싶습니다.

먼저 xts 개체를 데이터 프레임으로 변환하려고했지만 숫자 대신 클래스 요소가있는 열에 문제가 있습니다. 나는 또한 '집계'를 시도했지만 집계를 사용하면 실제로 이상한 출력 (또는 오류)이 발생합니다. 다음의 예는 다음과 같습니다

예를 들어, 코드 내 데이터의 더 작은 버전을 만들 :

# time vector: 
Time <- ISOdatetime(2015,01,01,6,12,0) + seq(0:(0.5*60-1))*1*60 

# sample parameter columns 
a <- 1:30 
b <- 31:60 
c<-seq(1,90,3) 

# a sample xts object 'tester' 
tester <- xts(cbind(a,b,c),Time) 

# assign 'time of day': 
tester$tod <- NA 
tester$tod["T06:00/T06:20"]<-"night" 
tester$tod["T06:21/T11:30"]<-"morning" 
tester$tod["T06:31/T06:50"]<-"afternoon" 

예를 들어 내가 모든 데이터 모두에 c를, A에 대한 B를 평균 값을 얻기 위해 시도하는 방법과 '총'사용 'TOD'에 의해 (이 내 데이터에 NA의를하지만 이것이 문제가되지 않습니다주의) :

tester$group = 1 #create a group column just to get the means for all data 
mean_all <- aggregate(.~group, data=tester, FUN=mean, na.rm = TRUE, na.action=NULL) 
meann_tod <- aggregate(.~tod, data=tester, FUN=mean, na.rm = TRUE, na.action=NULL) 

불행하게도이 작동하지 않는 오류가 없음에도 불구하고, 값이 완전히 잘못이다.

모든 조언을 많이 주시면 감사하겠습니다. 매우 간단한 작업이라고 생각합니다.

답변

2

tod 문자 벡터를 만들려고 할 때 coredata 행렬을 숫자가 아닌 문자로 강제 변환해야했습니다. 저자는 기본적으로 다른 데이터를 엉망으로 만들 것을 거부했을 때 경고를 보내지 만 무시했다. (나는 약간의 추가 작업을하기 전까지는 이해하지 못했다.) 그룹화를 수행하기 위해 숫자 벡터를 만들 수있다.

> tester$tod <- NA 
> tester$tod["T06:00/T06:20"]<-1 
> tester$tod["T06:21/T11:30"]<-2 
> tester$tod["T06:31/T06:50"]<-3 
> 
> tester$group = 1 
> (mean_all <- aggregate(.~group, data=tester, FUN=mean, na.rm = TRUE, na.action=NULL)) 
    group a b c  tod 
1  1 15.5 45.5 44.5 2.133333 
> (meann_tod <- aggregate(.~tod, data=tester, FUN=mean, na.rm = TRUE, na.action=NULL)) 
    tod a b c group 
1 1 4.5 34.5 11.5  1 
2 2 13.5 43.5 38.5  1 
3 3 24.5 54.5 71.5  1 
아마 공식에서 "그룹"변수를 생략했을

:

> (meann_tod <- aggregate(cbind(a,b,c)~tod, data=tester, FUN=mean, na.rm = TRUE, na.action=NULL)) 
    tod a b c 
1 1 4.5 34.5 11.5 
2 2 13.5 43.5 38.5 
3 3 24.5 54.5 71.5