将带时间戳的数据分成多个容器

时间:2016-04-17 06:16:44

标签: r

我有一个文本文件,其中包含按下相关按钮的时间戳。 我用R studio将它加载到R中。 按下按钮的格式为字符串。

52 right 08:16:23

53     a 08:16:23

54    up 08:16:24

55     a 08:16:24

56     b 08:16:24

57     a 08:16:24

58     a 08:16:24

59 right 08:16:24

60     a 08:16:24

时间戳已转换为POSIXct时间戳,但在我的文本文件中包含单独的日期和时间字段。

我希望根据时间将数据分成等间距的分档,并计算其中每个按钮的频率。

有一些按钮,并且有许多不同的非唯一时间戳。

理想情况下,我喜欢小到一分钟的间隔,并且允许我更改粒度的解决方案会很棒。

2 个答案:

答案 0 :(得分:1)

您可能会对这些功能感兴趣:

答案取决于时间是否被R识别。如果不是,则可以使用

chron( ... ) 

关于你的时间变量。请参阅:http://www.stat.berkeley.edu/~s133/dates.html

c <- cut(time_variable, number_of_bins)

这应该得到时间变量的最大值和最小值,将范围除以箱子的数量,然后将每个时间分配给适当的箱子

table(c)

这将返回每个bin中的频率

答案 1 :(得分:1)

假设您有一个名为“dat”的data.frame,并且时间值位于名为“V3”的列中,因为它位于我创建的文本中。然后使用seq.POSIXct以一分钟的间隔只创建一个点,切割无法处理,所以我开始添加不同的值。在这个过程中,我发现我使用seq.POSIXct的初始尝试返回NA为上限值,因为如果秒数在最大时间内高于最小时间,则序列结束,所以我在最大值上加60秒。作为此演示的间隔。您应该能够在明显的位置概括代码。

# Initial failed attempt with your data
> grp <- cut(dat$time, breaks=seq(min(dat$time), max(dat$time), by="1 min"), include.lowest=TRUE) 
Error in cut.default(unclass(x), unclass(breaks), labels = labels, right = right,  : 
  'breaks' are not unique

 # Better data, more challenging, allows better testing

dat$grp <- cut(dat$time, breaks=seq(min(dat$time), 
                                      max(dat$time)+60, by="1 min"), 
                           include.lowest=TRUE,right=TRUE)

> dat
  V1    V2       V3                time                 grp
1 52 right 08:16:23 2016-04-17 08:16:23 2016-04-17 08:15:24
2 53     a 08:16:23 2016-04-17 08:16:23 2016-04-17 08:15:24
3 54    up 08:17:59 2016-04-17 08:17:59 2016-04-17 08:17:24
4 55     a 08:18:45 2016-04-17 08:18:45 2016-04-17 08:18:24
5 56     b 08:20:53 2016-04-17 08:20:53 2016-04-17 08:20:24
6 57     a 08:20:01 2016-04-17 08:20:01 2016-04-17 08:19:24
7 58     a  08:17:5 2016-04-17 08:17:05 2016-04-17 08:16:24
8 59 right 08:18:24 2016-04-17 08:18:24 2016-04-17 08:17:24
9 60     a 08:14:24 2016-04-17 08:14:24 2016-04-17 08:14:24

您可以使用表格按组获取计数:

> table(dat$grp)

2016-04-17 08:14:24 2016-04-17 08:15:24 2016-04-17 08:16:24 2016-04-17 08:17:24 
                  1                   2                   1                   2 
2016-04-17 08:18:24 2016-04-17 08:19:24 2016-04-17 08:20:24 
                  1                   1                   1 

有关处理缺失值的其他选项,请参阅?table