R平均值基于工作日和周末计算

时间:2015-06-10 09:43:49

标签: r

我有以下原始数据的子集数据。

ID    Day
1     Wednesday
2     Wednesday
1     Thursday
1     Friday
1     Saturday
2     Saturday
2     Sunday
1     Monday

如你所见,ID 1周三有一个条目。我需要总结ID 1的工作日并除以5.同样,我需要总结ID 1的周末天数除以2。

我需要的输出是

ID    Weekdays    Weekends
1     0.8         0.5
2     0.2         1

如您所见,对于ID 1,Weekdays = 0.8 = (4 entries of ID 1 on weekdays)/5 同样Weekends = 0.5 = (1 entry on weekends)/2

我需要实现的是计算周末和工作日每个ID的平均出现次数。我知道我们可以通过很多步骤来完成这些功能。有没有办法用较少的LOC实现相同的效果?

1 个答案:

答案 0 :(得分:5)

您可能会创建一些短周末矢量,然后只做一个简单的聚合,这里有一个可能的data.table解决方案

indx <- c("Sunday", "Saturday")
library(data.table)
res <- setDT(df)[, as.list(table(Day %in% indx)/c(5, 2)), by = ID]
setnames(res, c("ID", "Weekdays", "Weekends"))
#    ID Weekdays Weekends
# 1:  1      0.8      0.5
# 2:  2      0.2      1.0