2009-11-27 165 views
1

首先,我將不得不爲我的無知道歉,因爲我確信這是一個非常簡單的問題,但我對R很新。我的問題是我有一個看起來像這樣的數據框;非常簡單的條形圖

countrydes  Insured 

USA    4500 
CANADA   4500 
USA    7500 
CANADA   7600 

所有我想要做的是國家聚集保險價值之和如產生條形圖

countrydes  Insured 

USA    12000  
Canada    12100 

非常感謝。

+0

謝謝,這讓我的生活變得更加輕鬆。 – 2009-11-30 09:55:16

回答

2

你可以簡單地將每一個分開求和。讓我們打電話給你的數據幀df:

USA <- sum(df[df$countrydes=="USA",]$Insured) 
CANADA <- sum(df[df$countrydes=="CANADA",]$Insured) 

但是使用aggregate(),你可以在一行中處理所有的國家。

aggsumcount <- aggregate(x=df$Insured,by=list(df$countrydes),FUN=sum) 
3

這將這樣的伎倆:(正如Etiennebr提到的,你可以使用aggregate代替by,在這種情況下,你需要強迫countrydes是list)

# Define your data 
dfr <- data.frame(
    countrydes=rep(c("USA", "CANADA"), 2), 
    Insured=c(4500, 4500, 7500, 7600)) 
# Sum by country 
totals <- with(dfr, by(Insured, countrydes, sum)) 
# Plot the answer 
barplot(totals)