2017-08-31 15 views
1

私は平均ピボットテーブルと同様に、平均のサマリーテーブルを30分で取得しようと試みました。私の好みの方法は集計ですが、一番上の行の平均値だけを得るようです。R、参照列内のすべての値を集計する(ちょうど1つではなく)

データは、グループとメッセージを無視できるリンクのように表示されます。 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

'summary_all'、' summarise_at'、 'summaris_if'と' group_by'を使って、 'dplyr'のデータを集約することができます。 'Book3.csv'を共有することができれば、おそらくこれを行う方法を示すことができます。 – www

+0

データの画像の代わりにデータを含める方が常に良いです。 'dput(Data)'を試して、質問を編集してそのコマンドの出力を含めてください。 – lebelinoz

答えて

0

私はプロのためにdplyrライブラリを使いたいですこの種のblems:

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

私は(あなたがそれに慣れる)パイプ%>%が読みコードが容易になります見つけます。これはdplyrライブラリの機能です。

+1

それはうまくいった。本当にありがとう! – Lindon

0

私はこのような要約操作にdata.tableを使用することを好む:あなたは、グループと時間の組み合わせごとに1行があるでしょう意味グループと時間によって

setDT(Data) 

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

この意志グループ、。ダミーデータで

(時間3 "時間" を使用し、また、ソートするkeybybyを変更):

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)] 

出力:aggregate

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 

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

ありがとうございました。私はこれを使用していたが、data.tableパッケージを正しくインストールするためのいくつかの問題を抱えていた(インストールしても機能を見つけられないようだ)。ウェブを検索すると、これはよくある問題のようです。これは知っていることが素晴らしいです! – Lindon

関連する問題