2011-11-01 30 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"]]) 
相關問題