0

id.varsinmelt()と で動作させる方法に少し苦労してい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

どんな助けでも感謝します。

4

1 に答える 1

1

次のように、「Sex」と「variable」という 2 つの要素をコロンで結合できます。

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

これは私にとって何度かうまくいきました。しかし、私は R にかなり慣れていないので、これはスタイルが悪いと考えられているのかもしれません。

于 2012-09-30T18:56:49.380 に答える