2015-10-13 54 views
-1

從最近的R課程以及Q和As中查看筆記後,我需要使用的最可能的函數來獲得我需要的東西似乎是colsum,和groupby但不知道該怎麼做,你能幫我一個忙嗎?R添加數據行並按組總結它們

(第一我試圖尋找到總結和group by,但沒有得到遠)

我有什麼

player year team rbi 
a  2001 NYY 56 
b  2001 NYY 22  
c  2001 BOS 55 
d  2002 DET 77 

結果想

year team rbi 
2001 NYY 78 
2001 BOS 55 
2002 DET 77 

球員名字丟失了,爲什麼?

我想加起來打點使用個別球員每隊每年爲打點的

所以每年應該有讓說,32支球隊,併爲每個團隊應該有一分打點數量,其是在特定年份爲每支球隊打的所有球員的總和。

謝謝

+0

有很多聚合數據的函數,例如'aggregate(rbi〜year + team,data = dat,FUN = sum)',其中'dat'是你的數據。玩家的名字會丟失,因爲您是通過年份和團隊的獨特組合進行彙總的。 – jenesaisquoi

+0

如果您將數據顯示在簡單的複製/粘貼代碼以及您用來彙總數據的代碼中,則會更好。 – Molx

回答

1

假設df包含您的播放器的數據,那麼你就可以得到你想要的

library(dplyr) 
df %>% 
    group_by(year, team) %>% 
    summarise(rbi = sum(rbi)) 

球員的名字都將丟失,因爲列playergroup_by條款中不包括結果,因此summarise未用於彙總rbi列中的數據。

2

一個data.table方法是將「data.frame」到「data.table」(setDT(df)),由「年」和「團隊」分組進行轉換,我們得到「打點」的sum

library(data.table) 
setDT(df)[, .(rbi=sum(rbi)), by= .(year, team)] 
# year team rbi 
#1: 2001 NYY 78 
#2: 2001 BOS 55 
#3: 2002 DET 77 

注意:'玩家'名稱已丟失,因爲我們未在彙總步驟中使用該變量。

2

按@bunk的評論,你可以使用aggregate功能

aggregate(df$rbi, list(df$team, df$year), sum) 

# Group.1 Group.2 x 
#1  BOS 2001 55 
#2  NYY 2001 78 
#3  DET 2002 77 

按@ akrun的評論,以保持列名,因爲它是,你可以使用

aggregate(rbi ~ team + year, data = df, sum) 
+1

您可以使用公式方法來更改列名稱。或'彙總(列表(rbi = df $ rbi),列表(隊= df $隊,年= df $年),總和) – akrun

+1

謝謝@akrun,答案已更新! –

0

謝謝爲了您的幫助解決我的問題,在流行的電子表格程序中可以做得更輕鬆一些,但我決定在R中完成,我喜歡這個程序,但它的學習曲線雖然有學習曲線

當我根據最終運行的行數來評估答案時,有4條建議可以解決我的問題,其中3條工作正常,因爲我知道答案應該來自相關數據框。

1)Arun的建議工作正常,並使用一個新的圖書館(數據。表)我讀多了幾分這個庫,看起來有趣

library(data.table) 
    setDT(df)[, .(rbi=sum(rbi)), by= .(year, team)] 

2)同樣來自Alexs提案工作也沒關係,這是

library(dplyr) 
    df %>% 
    group_by(year, team) %>% 
    summarise(rbi = sum(rbi)) 

3)Akruns解決得也不錯。這是一個我喜歡的大部分是因爲球隊列的字母順序來則已,它來了按年度和團隊進行排序,當你需要指定你前面的兩個解決方案,希望通過一年排序,然後組隊

aggregate(list(rbi=df$rbi), list(team=df$team, year=df$year), sum) 

4)Ronak解決方案几乎工作,走出了2775行,結果不得不有這樣的解決方案只帶了2761的代碼是:再次

aggregate(rbi ~ team + year, data = df, sum) 

感謝大家

哈維爾

+0

如果您將'by'更改爲'keyby',那麼'setDT(df)[,。(rbi = sum(rbi)),by =。(year,team)]' –

相關問題