大きなデータフレームを転置する必要があるため、以下を使用しました。
df.aree <- t(df.aree)
df.aree <- as.data.frame(df.aree)
これは私が得るものです:
df.aree[c(1:5),c(1:5)]
10428 10760 12148 11865
name M231T3 M961T5 M960T6 M231T19
GS04.A 5.847557e+03 0.000000e+00 3.165891e+04 2.119232e+04
GS16.A 5.248690e+04 4.047780e+03 3.763850e+04 1.187454e+04
GS20.A 5.370910e+03 9.518396e+03 3.552036e+04 1.497956e+04
GS40.A 3.640794e+03 1.084391e+04 4.651735e+04 4.120606e+04
私の問題は、新しい列名(10428、10760、12148、11865)です。最初の行を列名として使用する必要があるため、これを削除する必要があります。
col.names()
関数で試しましたが、必要なものが手に入りません。
何か提案はありますか?
編集
ご提案ありがとうございます!!!それを使用して私は入手します:
df.aree[c(1:5),c(1:5)]
M231T3 M961T5 M960T6 M231T19
GS04.A 5.847557e+03 0.000000e+00 3.165891e+04 2.119232e+04
GS16.A 5.248690e+04 4.047780e+03 3.763850e+04 1.187454e+04
GS20.A 5.370910e+03 9.518396e+03 3.552036e+04 1.497956e+04
GS40.A 3.640794e+03 1.084391e+04 4.651735e+04 4.120606e+04
GS44.A 1.225938e+04 2.681887e+03 1.154924e+04 4.202394e+04
ここで、因子列の行名(GS ..)を変換する必要があります。
名前列が含まれている間はdata.frameを転置しない方がいいでしょう-すべての数値は文字列に変換されます!
数値を数値として保持するソリューションを次に示します。
# first remember the names
n <- df.aree$name
# transpose all but the first column (name)
df.aree <- as.data.frame(t(df.aree[,-1]))
colnames(df.aree) <- n
df.aree$myfactor <- factor(row.names(df.aree))
str(df.aree) # Check the column types
df.aree <- as.data.frame(t(df.aree))
colnames(df.aree) <- df.aree[1, ]
df.aree <- df.aree[-1, ]
df.aree$myfactor <- factor(row.names(df.aree))
data.table
ライブラリのtranspose
関数を使用できます。 numeric
の値をnumeric
として保持するシンプルで高速なソリューション。
library(data.table)
# get data
data("mtcars")
# transpose
t_mtcars <- transpose(mtcars)
# get row and colnames in order
colnames(t_mtcars) <- rownames(mtcars)
rownames(t_mtcars) <- colnames(mtcars)