我在id.vars
inmelt()
以及如何使它与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),以便它可以区分男性和女性的值。
如果我进行此调用,则不会捕获Sex
分组。
ggplot(ca1970_1989.m, aes(x=Year, y=value, group=variable), colour=variable)) +
geom_line()
我应该使用cast
性别variable
和种族的组合吗?我应该首先melt()
对id.vars
参数使用不同的方法吗?
任何帮助表示赞赏。