2012-09-29 55 views
0

我在melt()中掙扎了一下id.vars以及如何使它與ggplot()一起使用。ggplot的熔融數據的標識符

比方說,我得到這個數據在加利福尼亞州人口的種族,年齡,性別和自1970年以來:

ca1970_1989<-read.table(
url('http://www.dof.ca.gov/research/demographic/data/race-ethnic/1970-89/documents/California.txt'), 
header=F,strip.white=TRUE,stringsAsFactors=T) 
names(ca1970_1989)<-c('County name','Year','Sex','Age','Total Population','White Population','Hispanic Population','Asian & Pacific Islander Population','Black Population','American Indian Population') 

我不需要年齡暫且這麼我總結說了。

ca1970_1989.agg<-aggregate(ca1970_1989[,6:10],by=list(ca1970_1989$Sex,ca1970_1989$Year),FUN=sum)

我想ggplot()繪製它,所以我融化酌情:

ca1970_1989.m<-melt(ca1970_1989.agg, id.vars=c('Group.1','Group.2')) names(ca1970_1989.m)[1:2]<-c('Sex','Year')

> head(ca1970_1989.m) 
    Sex Year   variable value 
1 FEMALE 1970 White Population 7845344 
2 MALE 1970 White Population 7635379 
3 FEMALE 1971 White Population 7848106 
4 MALE 1971 White Population 7626582 
5 FEMALE 1972 White Population 7827480 
6 MALE 1972 White Population 7597465 

我想傳遞給ggplot,但讓它正確地知道有,事實上,一個額外的標識符(性別),因此它可以區分男性和女性的價值觀。

如果我打這個電話,我不會捕獲Sex分組。

ggplot(ca1970_1989.m, aes(x=Year, y=value, group=variable), colour=variable)) + 
geom_line() 

我應該使用castvariable是性別和種族的組合?我應該首先使用melt()id.vars參數有什麼不同?

任何幫助表示讚賞。

+0

我根本不關注。您的數據中存在性別變量。爲什麼ggplot不能使用變量'Sex'(如果你告訴它)? – joran

+0

,因爲它是禁忌。 – flodel

+0

我正在使用這個調用,所以問題在於我使用'variable'作爲分組級別。我可以同時使用'變量'和'性別'嗎? 'ggplot(ca1970_1989.m,aes(x = Year,y = value,group = variable,color = variable))+ geom_line()' – ako

回答

1

您可以用冒號的兩個因素「性」和「變量」合併到一起,就像這樣:

ggplot(ca1970_1989.m, aes(x=Year, y=value, group=variable:Sex),color=variable) + geom_line() 

這個工作對我好幾次。但是我對R來說比較陌生,所以它可能被認爲是不好的風格。

+0

這非常簡潔。似乎它和@joran爲幕後因素提出的交互()相同。許多方法在這裏皮膚雞:) – ako