我有一个这样的数据表:
datetime EquipmentNumber Count Raw
1: 2012-11-28 16:00:00 100094233 1 2
2: 2012-11-30 10:00:00 100094233 2 2
3: 2012-11-30 11:00:00 100094233 0 0
我想为每个Raw
获得最高100 EquipmentNumber
个值(有15个)
我已将数据降序排序,并为每个EquipmentNumber
分类,如下所示:
vc.sorted <- VisitorCounters[order(EquipmentNumber, -Raw),]
但不知道如何将这些子集合为一个数据表,显示每个Raw
的{{1}}的前100个值。
感谢您的帮助。
答案 0 :(得分:1)
使用if (!reader.IsDBNull(5))
{
byte rawCreditHold = reader.GetByte(5);
creditHold = (rawCreditHold == 1);
}
包
dplyr
答案 1 :(得分:0)
您可以尝试使用order
和by
。根据{{1}}列对数据框进行排序,然后为每个Raw
选择前100行。
EquipmentNumber
答案 2 :(得分:0)
我们可以使用data.table
(因为OP的数据集为data.table
)以紧凑且更快的方式执行此操作。将'data.frame'转换为'data.table'(setDT(VisitorCounters)
- 如果它不是data.table
),按'Equipmentnumber'分组,order
''Raw'in'我',我们得到head
的前100行。
library(data.table)
VisitorCounters[order(-Raw), head(.SD, 100), by = Equipmentnumber]
或使用setorder
setorder(VisitorCounters, Equipmentnumber, -Raw)[, head(.SD, 100), by = Equipmentnumber]
使用可重现的例子
set.seed(24)
dt1 <- data.table(id = rep(1:3, each = 3), value = rnorm(9))
setorder(dt1, id,-value)[, head(.SD, 1), by = id]
# id value
#1: 1 0.5365853
#2: 2 0.8474600
#3: 3 0.4445853