2013-05-01 2 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을 사용하여 시도했지만, 나는 그것을 이해할 수 없다. (머리 (mydata을)를 dput하는

결과는 다음과 같습니다

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 * 동일한'ddply' 명령을 실행하십시오. 처음부터 똑같이하고 있는지 확인해주세요. –

답변

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 

인가?

이는 A simillar 방식으로 통합 할 수 plyr에서 ddply를 사용하는 것이 더 편리 할 실제 데이터를 수 사용 (하지만 당신은 두 개의 서로 다른 열을 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

+0

그리고, 출생률은 실제로 합산하지 말고 평균해야합니다. 나는 "sum"을 "mean"으로 대체함으로써 이것을합니다, 그렇죠? – PikkuKatja

+0

dput (head (mydata))을 추가하고 모든 독일어 이름에 너무 신경 쓰지 않기를 바랍니다 .- 어떤 방식 으로든 도움이됩니까? – PikkuKatja

관련 문제