2013-04-09 38 views
4

請考慮以下代碼。用reshape2逆轉熔化操作

library (reshape2) 
x = rnorm (20) 
y = x + rnorm (rnorm (20, sd = .01)) 

dfr <- data.frame (x, y) 
mlt <- melt (dfr) 

當我試圖扭轉這一操作與dcast,

dcast (mlt, value ~ variable) 

我得到的,而不是有三列(不適合分散繪圖,例如)的數據幀。 如何使用dcast重演原始數據框?

回答

3

R怎麼可能知道融化前存在的順序?即x的第一行與第一行y匹配的概念。

如果添加索引列(因爲R將抱怨重複row.names),你可以做到這一點簡單的操作:

dfr$idx <- seq_along(dfr$x) 
mlt <- melt(dfr, id.var='idx') 
dcast(mlt, idx ~ variable, value.var='value') 
+0

大加讚賞。 – 2013-04-09 16:22:10