2013-05-17 80 views
0

我在長格式的數據幀,像這樣的:功能輸出R代碼裏面

longData <- mtcars[1:5, 1:4] 
library(reshape2) 
melt(longData) 

Using as id variables 
    variable value 
1  mpg 21.0 
2  mpg 21.0 
3  mpg 22.8 
4  mpg 21.4 
5  mpg 18.7 
6  cyl 6.0 
7  cyl 6.0 
8  cyl 4.0 
9  cyl 6.0 
10  cyl 8.0 
11  disp 160.0 
12  disp 160.0 
13  disp 108.0 
14  disp 258.0 
15  disp 360.0 
16  hp 110.0 
17  hp 110.0 
18  hp 93.0 
19  hp 110.0 
20  hp 175.0 

是否有可能作出這樣的會吐出將R代碼,將建立以寬格式相同的數據幀的功能?注:我不想longData轉換爲寬幅,我希望通過編程輸出r代碼代碼,將數據幀轉換爲寬幅,像這樣:

someFunctionToOutputWideCode() 

data.frame(mpg = c(21.0, 21.0, 22.8, 21.4, 18.7), 
      cyl = c(6, 6, 4, 6, 8), 
      disp = c(160, 160, 108, 258, 360), 
      hp = c(110, 110, 93, 110, 175)) 
+1

爲什麼不只是包裝這將數據以寬格式轉換內部'dput代碼( )'? –

+0

@BrianDiggs爲什麼不先閱讀答案;) – eddi

回答

3

我不認爲這是什麼人的意思,當他們談論的是長而寬的格式,但是如何實現你想要的?

dput(as.data.frame(t(longData))) 
# structure(list(`Mazda RX4` = c(21, 6, 160, 110), `Mazda RX4 Wag` = c(21, 
# 6, 160, 110), `Datsun 710` = c(22.8, 4, 108, 93), `Hornet 4 Drive` = c(21.4, 
# 6, 258, 110), `Hornet Sportabout` = c(18.7, 8, 360, 175)), .Names = c("Mazda RX4", 
# "Mazda RX4 Wag", "Datsun 710", "Hornet 4 Drive", "Hornet Sportabout" 
#), row.names = c("mpg", "cyl", "disp", "hp"), class = "data.frame") 

重新OP編輯:同樣的想法 - 它轉換成任何你喜歡的格式,然後dput

dput(dcast(melt(longData), 1:5 ~ variable)) 
# structure(list(`1:5` = 1:5, mpg = c(21, 21, 22.8, 21.4, 18.7), 
#  cyl = c(6, 6, 4, 6, 8), disp = c(160, 160, 108, 258, 360), 
#  hp = c(110, 110, 93, 110, 175)), .Names = c("1:5", "mpg", 
# "cyl", "disp", "hp"), row.names = c(NA, -5L), class = "data.frame") 
+0

道歉,剛剛意識到'mtcars'已經是廣泛的格式。問題修正。 – luciano

+0

@luciano - 同樣的想法,請參閱編輯 – eddi