R - 按日期分组

时间:2015-04-01 10:20:09

标签: r datetime posixlt

我试图通过日期字段广告对大型数据框进行子集化,这会面临奇怪的行为:

1)找到有趣的时间间隔:

> ld[ld$bps>30000000,]
            Date.first.seen Duration Proto      Src.IP.Addr Src.Pt      Dst.IP.Addr Dst.Pt Tos Packets    Bytes      bps
1400199 2015-03-31 13:52:24    0.008 TCP      3.3.3.3   3128      4.4.4.4  65115   0      39    32507 32500000
1711899 2015-03-31 14:58:10    0.004 TCP      3.3.3.3   3128      4.4.4.7  49357   0      29    23830 47700000

2)并试着看看在那一秒发生的事情:

> ld[ld$Date.first.seen=="2015-03-31 13:52:24",]
            Date.first.seen Duration Proto      Src.IP.Addr Src.Pt      Dst.IP.Addr Dst.Pt Tos Packets    Bytes bps
1401732 2015-03-31 13:52:24   17.436 TCP      3.3.3.3   3128    6.6.6.6  51527   0       3     1608 737

并非真正理解这种行为 - 我应该获得更多结果。 例如

> ld[1399074,]
            Date.first.seen Duration Proto      Src.IP.Addr Src.Pt      Dst.IP.Addr Dst.Pt Tos Packets    Bytes      bps
1399074 2015-03-31 13:52:24    0.152 TCP      10.10.10.10   3128    11.11.11.11  62375   0       8     3910   205789

日期我使用POSIXlt

> str(ld)
'data.frame':   2657583 obs. of  11 variables:
 $ Date.first.seen: POSIXlt, format: "2015-03-31 06:00:00" "2015-03-31 06:00:00" "2015-03-31 06:00:00" "2015-03-31 06:00:01" ...
...

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

POSIXlt可能会带有在打印整个data.frame,时区,夏令时等时被抑制的其他信息。请查看https://stat.ethz.ch/R-manual/R-devel/library/base/html/DateTimeClasses.html

仅打印POSIXlt变量(ld$Date.first.seen)通常至少提供一些此附加信息。

如果由于某些特殊原因需要将变量保留在POSIXlt中,并且如果您不需要格式启用的额外功能,那么这很简单:

ld$Date.first.seen = as.character(ld$Date.first.seen)

在子语句之前添加可能会解决您的问题。