按时间戳分组数据,然后使用R分组活动类型

时间:2014-08-13 12:09:29

标签: r data.table

好的,这就是问题所在。

我有一个数据集,列出了在不同时间与各种ID相关的活动(各种类型)。数据集实际上是几万行长,看起来像这样

      ID        DATE_EVENT TIME_EVENT EVENT_TYPE
 1:   520424473 07/08/2014   09:28:16      9,210      
 2:   504344215 07/08/2014   09:10:27      1,000    
 3:   051745297 07/08/2014   09:40:16      1,000    
 4:   961837100 07/08/2014   09:44:13      1,000     
 5:   412980113 07/08/2014   09:40:59      1,000
 6:   051745297 07/08/2014   09:40:23      9,034
 7:   520424473 07/08/2014   09:28:22      1,000

我希望能够通过ID对事物进行分组,然后按时间顺序排序,然后统计整个数据集中每个EVENT_TYPE花费的时间,(甚至在范围内更好) EVENT_TYPES)。我之前用过这个

library(data.table)
setDT(Allvol)[, list(mean = mean(volume, na.rm = T), 
                     sd = sd(volume, na.rm = T)), by = ID]

以前的某些数据是为了按ID对数据进行分组,然后计算每个数据的均值和s.d,但是该数据集略有不同,我有一个与EVENT_TYPES相关的卷的列。我想我需要类似的东西,但不知道如何处理这个问题。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您尚未提供数据,但以下内容可能会有所帮助:

volume = sample(1000:2000,100)
id = sample(1:10,100, replace=T)
allvol = data.frame(id, volume)

head(allvol)
  id volume
1  5   1946
2  6   1828
3  5   1851
4  6   1296
5  5   1285
6  8   1238

means = with(allvol, tapply(volume, id, mean))
sds = with(allvol, tapply(volume, id, sd))

outdf = data.frame(id=names(means), means, sds)

outdf
   id    means      sds
1   1 1566.000 397.5433
2   2 1504.818 368.3938
3   3 1660.600 328.4202
4   4 1518.308 265.1347
5   5 1482.000 309.9055
6   6 1342.800 281.8632
7   7 1555.444 232.2246
8   8 1556.667 286.3241
9   9 1588.500 283.5166
10 10 1505.867 348.3440