2012-06-08 151 views
-2

我是Excel用戶,試圖將一些常規數據報告任務轉換爲R. Excel中最強大的功能之一是對數據進行透視和排序的功能。我知道這些函數是R中的功能,但我不知道如何編寫代碼來解決這個特定的分組和排序問題。R中的分組和排序

基本上,使用RI想取一個數據集,看起來像這樣:

Simple Data Set

和改造它看起來是這樣的:

Pivoted Data Set

注意,最終表格組,然後按摘要點數排序摘要數據。學習如何在R中做到這一點將是一個巨大的節省時間。

在此先感謝您的幫助!

+0

SO不是一個「gimme the codez」網站。嘗試一些東西,然後回答你寫的內容。 – CAbbott

+0

除了其他評論(我同意),這對決賽桌來說是一個非常糟糕的格式。 –

回答

3

你將需要的兩個功能......一旦你有一個例子......是xtabsftable。首先,我們將現有表格轉換爲數據框,然後注意計數現在位於名爲「Freq」的變量中。然後我們重新制表,以較小的維數:

> Tdf <- as.data.frame(Titanic, stringsAsFactors=FALSE) 
> str(Tdf) 
'data.frame': 32 obs. of 6 variables: 
$ Class : chr "1st" "2nd" "3rd" "Crew" ... 
$ Sex  : chr "Male" "Male" "Male" "Male" ... 
$ Age  : chr "Child" "Child" "Child" "Child" ... 
$ Survived: chr "No" "No" "No" "No" ... 
$ Freq : num 0 0 35 0 0 0 17 0 118 154 ... 

> ftable(xtabs(Freq ~ Class+Sex, Tdf) , row.vars=c("Class", "Sex")) 
Class Sex   
1st Female 145 
     Male 180 
2nd Female 106 
     Male 179 
3rd Female 196 
     Male 510 
Crew Female 23 
     Male 862 

我還沒有爲它得到很多分,但我在同一時間做演示的那麼怎麼辦小計和總計:

R: calculating column sums & row sums as an aggregation from a dataframe

2

首先,歡迎來到R和SO。你會發現,你得到更好的答案,如果你遵循的準則在這裏張貼問題:

How to make a great R reproducible example?

你可以完成你在許多方面要求的。

首先,您需要在由c(Team,Player)創建的每個分組上使用sum函數。有這樣做的幾種方法:

  • by在基礎R,加上as.data.frame.bytaRifx
  • ddplyplyr

然後把結果輸出,並再次對其進行排序(,很多方法可以做到這一點):

  • sorttaRifx
  • plyr
  • arrange

因爲它聽起來就像你會做這個有很多,我強烈建議創建自己的功能,在執行只是你想要的方式,兩個步驟像自動。然後,您可以將該功能放入您的.Rprofile或包中,以便始終可用。