转置一个dataframe

我需要转置一个大的数据框,所以我用:

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()函数,但我没有得到我所需要的。

你有什么build议吗?

编辑

感谢您的build议! 使用它我得到:

 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 – 所有的数值将被转换为string!

这是一个解决scheme,保持数字为数字:

 # 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库中的transposefunction。 将numeric保留为numeric简单而快速的解决scheme。

 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)