在R中对时间数据进行分组

3
我有鸟类出发和到达的时间数据(例如到达时间为17:23:54)。我想将数据分成2小时时间段(例如0:00:00-1:59:59 ...等),共12个时间段。数据最终会进入一个条形图,x轴是时间段,y轴是计数。包“binr”是否是最好的选择?
谢谢

可能是 Binning Dates in R 的重复问题。 - thepule
2
或者只需使用 ?cut - 它也适用于时间。无需包。例如,像 cut(x, breaks="2 hours") 这样。 - thelatemail
1个回答

9

只需使用 ?cut,因为它有一个处理?cut.POSIXt日期/时间的方法。例如:

x <- as.POSIXct("2016-01-01 00:00:00", tz="UTC") + as.difftime(30*(0:47),units="mins")
cut(x, breaks="2 hours", labels=FALSE)
# or to show more clearly the results:
data.frame(x, cuts = cut(x, breaks="2 hours", labels=FALSE))

#                     x cuts
#1  2016-01-01 00:00:00    1
#2  2016-01-01 00:30:00    1
#3  2016-01-01 01:00:00    1
#4  2016-01-01 01:30:00    1
#5  2016-01-01 02:00:00    2
#6  2016-01-01 02:30:00    2
#7  2016-01-01 03:00:00    2
#8  2016-01-01 03:30:00    2
#9  2016-01-01 04:00:00    3
#10 2016-01-01 04:30:00    3
# ...

如果您的数据仅为字符串,则需要首先进行转换。如果不指定特定日期,则时间将最终分配给当天。

as.POSIXct("17:23:54", format="%H:%M:%S", tz="UTC")
#[1] "2016-07-13 17:23:54 UTC"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接