1

行名を持つこの乱雑なデータフレームがあるとします

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 行で達成するために 、私の呼び出しが別の方法で行われた可能性はありますか?

4

1 に答える 1