2015-05-28 53 views
0

我有一個3列的數據框(但這可能更多取決於我帶入數據框的文件的數量),所以我創建了最後一列(第4列)用數字代碼告訴我我想在哪裏解除數據(每列包含4組數據,所以我已經編碼它們)。Unstacking列(簡單但我掙扎!)

我想根據排序列來排列這三列,以便我現在有12列(3列x 4組)。

我知道這可能是如此,如此簡單,但我無法得到它。

在此先感謝!

+2

[?如何使一個偉大的[R重複的例子(http://stackoverflow.com/questions/5963269/how-to-make-a-great -r-reproducible-example) – zx8754

+0

看起來你在數據框中有一些列表。如果你可以顯示一些例子和預期的結果,那就更容易了 – akrun

+0

'''df = do.call(cbind,split(df [, - ncol(df)],df $ NameOfColumn4Here))'工作。 – Vlo

回答

0

這可以用reshape()做到:

df <- cbind(matrix(1:24,8,dimnames=list(NULL,c(letters[1:3]))),code=rep(1:4,each=2)); 
df; 
##  a b c code 
## [1,] 1 9 17 1 
## [2,] 2 10 18 1 
## [3,] 3 11 19 2 
## [4,] 4 12 20 2 
## [5,] 5 13 21 3 
## [6,] 6 14 22 3 
## [7,] 7 15 23 4 
## [8,] 8 16 24 4 
reshape(transform(df,id=ave(code,code,FUN=seq_along)),dir='w',timevar='code')[-1]; 
## a.1 b.1 c.1 a.2 b.2 c.2 a.3 b.3 c.3 a.4 b.4 c.4 
## 1 1 9 17 3 11 19 5 13 21 7 15 23 
## 2 2 10 18 4 12 20 6 14 22 8 16 24