2011-11-01 32 views
18

我有一个大的数据帧,但小的例子是这样的:移调一个数据帧保持第一列作为标题

mydf <- data.frame(A = c(letters[1:10]), M1 = c(11:20), M2 = c(31:40), M3 = c(41:50)) 

我要转置数据框和保持柱1(A)的列标题(字母[1:10])作为变量名称。以下是不成功代码的划伤试验。

tmydf = data.frame(t(mydf)) 
names(tmydf) <- tmydf[1,] 

谢谢;

+1

您不需要为用冒号创建的序列调用'c'。所以'11:20'与'c(11:20)'相同,''[1:10]'与'c(字母[1:10])'相同。 –

回答

38

这里有一种方法

tmydf = setNames(data.frame(t(mydf[,-1])), mydf[,1]) 
+0

有几个类似的线程,像这样:http://stackoverflow.com/questions/6645524/what-is-the-best-way-to-transpose-a-data-frame-in-r-and-to-设置一个列或这:http://stackoverflow.com/questions/6778908/r-transposing-a-data-frame。到目前为止,我最喜欢你的答案+1。它很简单,可靠并且保持数字。 –

5

像这样的东西可能:

tmp <- as.data.frame(t(mydf[,-1])) 
> colnames(tmp) <- mydf$A 
> tmp 
    a b c d e f g h i j 
M1 11 12 13 14 15 16 17 18 19 20 
M2 31 32 33 34 35 36 37 38 39 40 
M3 41 42 43 44 45 46 47 48 49 50 
1

从Ramnath Data.table变式,指示在字符串变量名通缉。

mydf <- data.table(A = c(letters[1:10]), M1 = c(11:20), M2 = c(31:40), M3 = c(41:50)) 
tmydf <- setNames(data.table(t(mydf[,-"A"])), mydf[["A"]]) 
相关问题