2014-02-25 34 views

回答

3

試着這麼做:

start <- as.POSIXct("2012-01-15") 
end <- start + as.difftime(1, units="mins") 
Time.DF <- data.frame(Time = seq(from=start, by=15, to=end), 
         Info = 1:5) 
# This is one way to do it 
Time.DF$Bins <- with(Time.DF, {cut(
    Time, breaks = seq(from=min(Time), by=30, to=max(Time + 30)), labels = F)}) 
#      Time Info Bins 
# 1 2012-01-15 00:00:00 1 1 
# 2 2012-01-15 00:00:15 2 1 
# 3 2012-01-15 00:00:30 3 2 
# 4 2012-01-15 00:00:45 4 2 
# 5 2012-01-15 00:01:00 5 3 

# This is a second way to do it 
Time.DF$Bins2 <- with(Time.DF, {as.numeric(cut(
    Time, breaks = seq(from=min(Time), by=30, to=max(Time + 30))))}) 
#      Time Info Bins Bins2 
# 1 2012-01-15 00:00:00 1 1  1 
# 2 2012-01-15 00:00:15 2 1  1 
# 3 2012-01-15 00:00:30 3 2  2 
# 4 2012-01-15 00:00:45 4 2  2 
# 5 2012-01-15 00:01:00 5 3  3 
+0

感謝回答傑克,我基本上要垃圾箱被編號爲1,2,3基於30分鐘。 – user40465

+0

@ user40465當您提出這樣的要求時,R會帶着愉悅的笑容。我已經展示了兩種不同的方式來實現這一點,上面貼出來。 –

+0

謝謝傑克幫助我。 – user40465