如何通过将数据分成5秒间隔来绘制数据?

时间:2014-12-17 02:13:42

标签: r time intervals

我是R的新手,我的任务是制作一个脚本,将模拟用户网络使用的协议绘制成直方图,a)确定他们使用的协议,b)将所有协议分成5个 - 第二个间隔,并为每个使用的不同协议生成图表。

目前我们有

data$bucket <- cut(as.numeric(format(data$DateTime, "%H%M")), 
                c(0,600, 2000, 2359), 
                labels=c("00:00-06:00", "06:00-20:00", "20:00-23:59"))     #Split date into dates that are needed to be

将代码拆分为3个区域以用于其他功能。 代码应该以5秒的间隔更改为什么?

对不起,如果问题不是很清楚,谢谢

1 个答案:

答案 0 :(得分:2)

直方图函数hist()可以自行聚合和/或绘制所有函数,因此您实际上不需要cut()

让我们在一小时内创建1,000个随机时间戳:

set.seed(1)
foo <- as.POSIXct("2014-12-17 00:00:00")+runif(1000)*60*60

(请看?POSIXct关于R如何处理POSIX时间对象。特别注意“+”假设您要添加,这就是为什么我乘以60 ^ 2。)

接下来,以5秒为间隔定义断点:​​

breaks <- seq(as.POSIXct("2014-12-17 00:00:00"),
  as.POSIXct("2014-12-17 01:00:00"),by="5 sec")

(这一次,请看?seq.POSIXt。)

现在我们可以绘制直方图。请注意我们如何将hist()的输出分配给对象bar

bar <- hist(foo,breaks)

(如果你不想要情节,但只需要数量,请使用plot=FALSE。)

?hist告诉您hist()(不可见)返回每个桶的计数。我们可以通过访问counts的{​​{1}}广告位来查看此内容:

bar