我有一个data.table,如下所示:
ID Date Team MonthFactor
1 2512 2015-04-24 Purple 2015-04
2 2512 2015-04-25 Purple 2015-04
3 2512 2015-04-26 Purple 2015-04
4 2512 2015-04-27 Purple 2015-04
我想获得按Team
和MonthFactor
分组的行数,包括当某个月有没有行时,如果紫色团队有IE,那么5月份没有条目但黄色没有,总结表看起来像:
Team MonthFactor N
1 Purple 2015-04 10
2 Purple 2015-05 0
3 Yellow 2015-04 5
4 Yellow 2015-05 7
如果我不需要“空”组,那么这样做是微不足道的,但是当我可能没有包含给定monthFactor的行时,我无法理解如何指定需要评估的组
答案 0 :(得分:5)
您可以使用交叉联接来实现这一目标:
NSString *fileName = [array lastObject];
NSArray *newArray = [array subarrayWithRange:NSMakeRange(0, array.count-1)];
NSString *directoryPath = [newArray componentsJoinedByString:@"\\"];
这给出了:
dat[, .N, .(Team, MonthFactor)
][CJ(Team, MonthFactor, unique = TRUE), on = c(Team = "V1", MonthFactor = "V2")
][is.na(N), N := 0][]
此方法的优点是更容易包含其他变量。假设 Team MonthFactor N
1: Purple 2015-04 2
2: Purple 2015-05 0
3: Yellow 2015-04 5
4: Yellow 2015-05 3
只是一个数值,请考虑以下示例:
ID
给出:
dat[, .(.N, sID = sum(ID)), .(Team, MonthFactor)
][CJ(Team, MonthFactor, unique = TRUE), on = c(Team = "V1", MonthFactor = "V2")
][is.na(N), `:=` (N = 0, sID = 0)][]
使用过的数据:
Team MonthFactor N sID
1: Purple 2015-04 2 5024
2: Purple 2015-05 0 0
3: Yellow 2015-04 5 12560
4: Yellow 2015-05 3 7536
答案 1 :(得分:3)
也许这可以起作用
data.table(table(dt$Team,dt$MonthFactor))