行名を持つこの乱雑なデータフレームがあるとします
df<-data.frame(A=rnorm(2),B=rnorm(2),C=rnorm(2))
rownames(df)<-c('male','female')
> df
A B C
male 0.10138957 1.036535 2.0708251
female 0.08524181 -1.140275 -0.3800585
A
列、B
、およびC
が単一の列に折りたたまれ、 の追加の列があるように、きちんとした形式にしたいと思いますGender
。このように見えるかもしれません
> desired_df
where value Gender
1 A 0.10138957 male
2 A 0.08524181 female
3 B 1.03653464 male
4 B -1.14027549 female
5 C 2.07082513 male
6 C -0.38005851 female
を使用してこれを実現する 1 つの方法を次に示しtidyr
ます。
desired_df<-gather(df,where,value)
desired_df['Gender']<-rep(c('male','female'),nrow(df)/2)
しかし、かなり洗練されていない方法で行名を列に変換する必要がありました。私の質問は、これに役立つ、tidyr
またはreshape
役立つ追加機能は何ですか? gather
または、この結果を 1 行で達成するために 、私の呼び出しが別の方法で行われた可能性はありますか?