2015-06-10 91 views
2

我有我的原始數據的子集之後的數據。[R平均計數和週末

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

正如您所見,ID 1在星期三有一個條目。我需要5.同樣總結爲ID 1和除法平日,我需要通過2.

的輸出,我會需要總結爲ID 1和除法週末天

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來實現相同的功能?

回答

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