2015-09-22 65 views
0

我正在嘗試自動創建具有適當標題的直方圖。如何在彙總(...,hist)命令中輸入標題?

a <- c('aaa','bbb','ccc','aaa','bbb','ccc','aaa', 
    'bbb','ccc','aaa','bbb','ccc','aaa','bbb','ccc'); 
b <- rnorm(15,0,1); 
c <- data.frame(a,b); 
regions<-sort(unique(a)); 

有沒有一種方法來輸入regions對象在我的aggregate(命令爲了做我想要什麼?

我想象的另一種方法是使用循環和使用split()的數據框列表,但我想避免它。

+0

所以要三個直方圖,一個由數據對每個 '區域' 過濾? – leroyJr

+0

什麼是樣本輸出? – Soheil

回答

1

在你試圖創建三個直方圖,每個區域,合適的名稱,你可以使用sapply避免明確地編寫循環的情況。

# rename your data.frame c as df 
colnames(df) <- c('region', 'val') 
# filter your df by region, and create a title histogram 
sapply(regions, function(x) hist(df[df['region'] == x, 2], main=x) 

結果仍然需要一些愛,但是這應該讓你從三個單獨標題的直方圖開始。

0

這樣的事情呢?

a <- c('aaa','bbb','ccc','aaa','bbb','ccc','aaa', 
     'bbb','ccc','aaa','bbb','ccc','aaa','bbb','ccc'); 
b <- rnorm(15,0,1); 
c <- aggregate(b,by=list(a),FUN=sum) 
barplot(c$x, names.arg=c$Group.1,space = 0) 
+0

我正在尋找每個地區的直方圖,如果我沒有正確表達自己,抱歉。 – Ouistiti

2

這裏有兩個ggplot解決方案

# create more interesting example 
set.seed(1) # for reproducibility 
a <- rep(c('aaa','bbb','ccc'), each=100) 
b <- rnorm(length(a),mean=rep(1:3, each=100)) 
c <- data.frame(a,b) 

library(ggplot2) 
ggplot(c, aes(x=b, fill=a, color=a)) + 
    geom_histogram(binwidth=0.5, position="identity", alpha=.5) 

ggplot(c, aes(x=b, fill=a)) + 
    geom_histogram(binwidth=0.5, position="identity", color="grey70")+ 
    facet_grid(a~.)