2012-11-16 5 views
1

현재 데이터 프레임에 저장된 데이터를 하나의 열에 처리하고 있습니다. 하루 종일 나눠야 해. 0시에서 6시 59분 시간 동안 morning 7:00 13-midday - 지금까지, 나는이 세 가지 수준의 요소를 잘 작동하고, 생성POSIXlt 시간을 기준으로 요인을 만드시겠습니까?

workingdata <- read.csv(filename) 
workingdata$dateI <- as.POSIXlt(workingdata$dateI,format="%Y-%m-%d %H:%M:%S") 
workingdata$hourI <- workingdata$dateI$hour 
workingdata$shift <- cut(workingdata$hourI, breaks=c(0,6,13,23), 
         labels=c("morning","midday","evening"), 
         include.lowest=TRUE,right=TRUE) 

전체 시간에 따라이를하고있다 : 59, evening은 14:00부터 23:59까지입니다.

이제 비슷한 일을하고 싶습니다. 분당 초 단위로 예를 들어 보겠습니다. midday11:34:12에서 시작합니다. 순전히 POSIXlt를 기반으로 한 커팅으로 할 수있는 방법이 있습니까? 최선의 접근 방법은 무엇입니까?

편집 : ...은 내가 POSIXlt 개체로 절단을 지정 시도하지만 항상 날짜를 포함 할 것 같다, 그래서 내가 원하는 것이 아니다

> brk<-as.POSIXlt("11:34:12",format="%H:%M:%S") 
> brk 
[1] "2012-11-16 11:34:12" 
+0

는 당신이 시도 않았다위한 운동으로 남아있다? 그렇다면 무슨 일이 일어 났습니까? –

+0

필자가 이해하는 한 POSIXlt에서는 날을 포함하여 전체 날짜를 지정해야합니다. 이 질문을 주 질문에 추가했습니다. –

+0

brk에서 시간을 분리하면 어떻게됩니까? "justTime <- strsplit (as.character (brk)," ") [[c (1,2)]]' –

답변

0

당신은을 계산할 수 있습니다 귀하의 데이터와 귀하의 데이터가 시작된 날의 시작 시점과의 차이점을 계산하여 컷오프 포인트와 비교하십시오.

foo <- as.POSIXlt(runif(100,min=0,max=1000009),origin="2012-01-01") 
bar <- rep(NA,length(foo)) 
morning <- 
    foo-as.POSIXlt(paste(1900+foo$year,"-",1+foo$mon,"-",foo$mday,sep=""))< 
    11*60+34+12/60 
bar[morning] <- "morning" 

정오와 저녁 변화와 요인으로 bar을 돌리면 필요한 형식으로 휴식 시간을 나타내는 독자 ;-)

관련 문제