2017-08-31 58 views
1

我嘗試了幾種不同的方法來獲取半小時平均值的彙總表,類似於平均數據透視表。我最喜歡的方法是聚合,但我似乎沒有得到任何東西,但頂部行的平均值。R,引用列中的所有值的集合總結(而不是僅一個)

數據如鏈接所示,其中組和消息可以忽略。 See below.

我正在使用的代碼是...

Data <- read_csv("P:/Book3.csv", col_types = cols(Date = col_date(format = "%m/%d/%Y"), 
                Time = col_time(format = "%H:%M:%S"))) 
View(Data) 

class(Data) 
[1] "tbl_df"  "tbl"  "data.frame" 

aggregate(Data[, 3:4], list(Data$Time), mean) 

    Group.1 Calls Estimated_Calls 
1 08:30:00 15.38889  14.55556 

你會注意到單行線,但是理想的輸出將會對每一次的平均值。

任何幫助將是偉大的。謝謝。

+0

我們可以使用'summarise_all','summarise_at'或'summarise_if'和'group_by'來聚合'dplyr'中的數據。如果你可以共享'Book3.csv',我們可以演示如何做到這一點。 – www

+0

包含您的數據而不是數據圖片總是更好。嘗試'dput(Data)'並編輯你的問題以包含該命令的輸出。 – lebelinoz

回答

0

我喜歡使用dplyr庫for pro這種blems:

library(dplyr) 
Data %>% group_by(Time) %>% 
    summarise(Mean_Calls = mean(Calls), Mean_Est_Calls = mean(Estimated_Calls)) 

我找到管%>%使得代碼更易於閱讀(一旦你習慣了它)。這是dplyr庫的一項功能。

+1

工作。非常感謝! – Lindon

0

我更喜歡使用data.table像這樣總結操作:

setDT(Data) 

Data[, .(Mean_Calls = mean(Calls), Mean_Est_Calls = mean(Estimated_Calls)), 
    by=.(Group, Time)] 

由集團和長時間這樣,會組,這意味着你將有一行集團和時間的每個組合。

用啞數據(使用3 「小時」 爲時間;也改變bykeyby排序):

set.seed(48) 

df1 <- data.table(Group = sample(LETTERS[1:3],10,T), 
Time = sample(1:3,10,T), 
Calls = sample(1:50,10,T), 
Estimated_Calls = sample(1:50,10,T)) 

df1[, .(Mean_Calls = mean(Calls), Mean_Est_Calls = mean(Estimated_Calls)), 
     keyby=.(Group, Time)] 

輸出:

Group Time Mean_Calls Mean_Est_Calls 
1:  A 2 27.00000  22.00000 
2:  A 3 34.66667  25.66667 
3:  B 2 26.00000  6.50000 
4:  B 3 20.00000  1.00000 
5:  C 2 35.50000  32.00000 

隨着aggregate

df2 <- aggregate(df1[,3:4], by=with(df1,list(Group,Time)),mean) 
+0

非常感謝。我會用這個,但有一些麻煩得到data.table包安裝正確(安裝,但似乎從來沒有找到函數)。搜索網絡,這似乎是一個常見問題。儘管這很瞭解! – Lindon

相關問題