我有以下原始数据的子集数据。
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实现相同的效果?
答案 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