2014-03-30 3 views
1

나는 작게하려고하는 매우 큰 데이터 세트가 있습니다. 이 질문의 목적을 위해 필자는 몇 가지 변수에만 초점을 맞추어 단순화 할 것이다. 3 시간 동안 5 분마다 한 번씩 여러 과목을 채취 한 샘플을 두 시간 간격으로 함께 추가하고 싶습니다. 5 분 간격을 사용하는 대신 10 분 간격으로 전환하고 싶습니다.r에 시간 단위로 데이터 추가하기

데이터 :

ID Time Measurement 
A1 10 5 
A1 20 6 
A2 10 3 
A2 20 3 

가 어떻게이 R에 그렇게 할 것입니다 :

ID Time Measurement 
A1 5  2 
A1 10 3 
A1 15 2 
A1 20 4 
A2 5  0 
A2 10 3 
A2 15 3 
A2 20 0 

내가이로 전환 하시겠습니까?

+0

시간 변수가 실제로 이런 식으로 5의 배수입니까? – A5C1D2H2I1M1N2O1R2T1

+0

예, 5에서 180로 바뀝니다. 동물이 5 분마다 특정 행동을 수행 한 횟수의 데이터가 있습니다. 측정은 내가 서브 세트하는 10 가지 변수 중 하나를 참조합니다. – user3478656

답변

1

아마 당신은 어떤 식 으로든 findIntervalaggregate을 사용할 수 있습니다 ... 뭔가를 다음과 같이 아마도 :

mydf$newTime <- findInterval(mydf$Time, seq(1, 180, 10)) * 10 

## Or, as suggested by G. Grothendieck 
mydf$newTime <- 10 * ((mydf$Time - 5) %/% 10) + 10 

"mydf는"지금은 다음과 같다 : 여기에서

mydf 
# ID Time Measurement newTime 
# 1 A1 5   2  10 
# 2 A1 10   3  10 
# 3 A1 15   2  20 
# 4 A1 20   4  20 
# 5 A2 5   0  10 
# 6 A2 10   3  10 
# 7 A2 15   3  20 
# 8 A2 20   0  20 

우리 쉽게 사용할 수 있습니다 aggregate :

aggregate(Measurement ~ ID + newTime, mydf, sum) 
# ID newTime Measurement 
# 1 A1  10   5 
# 2 A2  10   3 
# 3 A1  20   6 
# 4 A2  20   3 

테스트를 거쳤습니다. 아무것도 그러나 당신의 샘플 데이터에 ....

+0

또는 아마도'mydf $ newTime <- 10 * ((mydf $ Time - 5) %/% 10) + 10' –

+0

@ G.Grothendieck, 아마 더 안전한 옵션입니다. – A5C1D2H2I1M1N2O1R2T1

+0

나는 이것이 효과가 있다고 생각하지만 지금은 또 다른 질문이있다. 이 통합 정보를 데이터 세트에 어떻게 추가 할 수 있습니까? 나는 압축 된 데이터와 원본 사이의 행에 차이가 있음을 이해하지만이 데이터에 대한 분석을 계획하고 실행할 수 있기를 원합니다. – user3478656