2013-05-01 43 views
4

我有一個包含單詞和數字條目的數據框。我想總結現在單詞中的行條目是相同的所有條目。R數據框中的條件總和取決於列中的字

District name Population Child birth rate 
A    30,000  .7 
A    20,000  .5 
B    10,000  .09 
B    15,000  .6 
C    80,000  .007 

我想概括一下區級的人口和兒童出生率。 我試着用lapply和sum,但我想不出來。

的結果dput(頭(MYDATA)是:

structure(list(District = structure(c(5L, 5L, 5L, 5L, 5L, 5L), .Label =   c("Charlottenburg-Wilmersdorf", 
"Friedrichshain-Kreuzberg", "Lichtenberg", "Marzahn-Hellersdorf", 
"Mitte", "Neukoelln", "Pankow", "Reinickendorf", "Spandau", "Steglitz-Zehlendorf", 
"Tempelhof-Schoeneberg", "Treptow-Koepenick"), class = "factor"), 
Population = c(81205L, 70911L, 5629L, 12328L, 78290L, 84789L 
), Overall.crime = c(27864L, 13181L, 943L, 4515L, 15673L, 
16350L), Robbery = c(315L, 195L, 20L, 79L, 232L, 261L), Mugging = c(183L, 
81L, 9L, 54L, 111L, 118L), Assault = c(2016L, 1046L, 51L, 
468L, 1679L, 1718L), Molestation.Stalking = c(480L, 429L, 
16L, 114L, 567L, 601L), Theft = c(13587L, 4961L, 396L, 2019L, 
6725L, 6954L), Car.Theft = c(185L, 149L, 10L, 28L, 159L, 
159L), Bycicle.Theft = c(1444L, 561L, 95L, 123L, 588L, 595L 
), Burglary = c(557L, 297L, 37L, 87L, 397L, 528L), Arson = c(36L, 
51L, 7L, 15L, 28L, 56L), Property.Damage = c(2113L, 871L, 
64L, 260L, 1257L, 1172L), Drug.Offenses = c(781L, 538L, 24L, 
87L, 604L, 492L)), .Names = c("District", "Population", "Overall.crime", 
"Robbery", "Mugging", "Assault", "Molestation.Stalking", "Theft", 
"Car.Theft", "Bycicle.Theft", "Burglary", "Arson", "Property.Damage", 
"Drug.Offenses"), row.names = c(NA, 6L), class = "data.frame") 

我之前所有的德國名字就饒了你,但我想這是愚蠢的,因爲這個問題是數據中...

使用ddply給了我以下錯誤:

Error in df$Population : object of type 'closure' is not subsettable 

感謝您的幫助

+0

請張貼代碼您正在使用運行'ddply'命令。我所做的只是複製上面的數據結構,並像這樣分配'mydata < - ...',我只需點擊'ctrl-v'來代替'...'來粘貼上面的數據結構。然後運行下面輸入的* exact * same'ddply'命令。請確認你是否在做同樣的事情? – 2013-05-01 13:14:46

回答

4

使用您最初發布的數據是否意味着要這樣做?

df <- read.table(text = "District_name Population Child_birth_rate 
A    30000  .7 
A    20000  .5 
B    10000  .09 
B    15000  .6 
C    80000  .007" , h = TRUE) 

aggregate(cbind(Population , Child_birth_rate) ~ District_name , data = df , sum) 
# District_name Population Child_birth_rate 
#1    A  50000   1.200 
#2    B  25000   0.690 
#3    C  80000   0.007 

這是個好主意,總和出生率?

使用實際數據可能是使用ddplyplyr在一個呈三角時尚聚集更方便(但要在兩個不同的列使用summean):

require(plyr) 
ddply(mydata , "District" , function(df) c("Pop" = sum(df$Population), "Robbery" = mean(df$Robbery))) 
# District Pop Crime 
#1 Mitte 333152 183.6667 
+0

是的,SimonO101!但是,我得到一個錯誤報告: 不能強制類「」公式「」到一個data.frame 我已經嘗試使數據幀矩陣,並再次做到這一點;它仍然報告相同的錯誤。 – PikkuKatja 2013-05-01 12:44:25

+0

而且,嘿嘿,這個出生率實際上不應該總結,而是平均的。我用「意思」來代替「sum」,不是嗎? – PikkuKatja 2013-05-01 12:46:59

+0

我添加了dput(head(mydata)),並希望你不會太在意所有這些德國人的名字;-)它有任何幫助嗎? – PikkuKatja 2013-05-01 13:00:31