2015-02-06 63 views
-1

我有一個包含看起來像這樣的數據的大數據框架內操縱子集:數據操作 - 亞

customer usage hour day temp 
5   0.13 07  14 59 
5   0.12 07  14 51 
5   0.11 08  14 53 
5   0.19 09  15 56 
12   0.19 07  15 60 
12   0.13 07  14 50 
12   0.13 07  14 40 
9   0.16 08  03 47 
9   0.16 08  15 59 
9   0.17 08  15 53 

我想要做的是,爲每一個客戶,增加了他們的用法爲每次小時並平均每個小時的溫度,相隔幾天。換句話說,在每個客戶子集中,我希望每個小時和每一天都有一個「使用」總和和一個「臨時」平均值。所以對於這個示例代碼,理想的輸出將是

customer SumUsage hour day Averagetemp 
5   0.25  07  14 55 
5   0.11  08  14 51 
5   0.11  09  15 56 
12   0.19  07  15 60 
12   0.26  07  14 45 
9   0.16  08  03 47 
9   0.33  08  15 56 

我希望這是有道理的。我是R新手,我似乎無法讓它正常工作。只需重複一次我想要的輸出結果:每個客戶在一個月的多天內每小時多次輸出多次「使用」輸出。每個「使用」輸出還有一個「臨時」讀數。我想結合每個客戶的所有小時讀數。因此,對於每一天的每個客戶,每天的每個小時應該有一小時的「使用」輸出總和,以及所有這些輸出的平均「臨時」。

回答

1

您可以使用summarisedplyr

require(dplyr) 
df %>% 
    group_by(customer, day, hour) %>% 
    summarise(SumUsage = sum(usage), Averagetemp = mean(temp)) 

或者使用data.table

require(data.table) 
setDT(df)[, list(SumUsage = sum(usage), 
       Averagetemp = mean(temp)), by = list(customer, day, hour)]