2010-09-20 67 views
1

我有一個大型數據集,可以跨主體進行重複評估。我如何去從:R重新排列主體內的數據框

subj, assessment, test1, test2 
A, 1,   10, 20 
A, 2,   12, 13 
A, 3,   11, 12 
B, 1,   14, 14 
B, 2,   13, 12 

要:

subj, test1_1, test1_2, test1_3 
A, 10,  12,  11 
B, 14,  13 

感謝,

喬恩

回答

2

你可以使用這個優秀的重塑/ reshape2包由哈德利輕鬆完成。這裏是代碼帶你到你需要的東西

library(reshape); 
df = melt(df, id = c('subj', 'assessment')); 
df = cast(df, subj ~ variable + assessment); 

讓我知道這是否適合你。

+1

我認爲,應該是「變」,而不是「測試「在演員表中,像這樣:df = cast(df,subj〜variable + assessment)。 (除非將variable_name =「test」添加到前一行)。 – Fojtasek 2010-09-20 16:48:35

+0

這是正確的。感謝您指出。我相應地修改了代碼 – Ramnath 2010-09-20 20:25:37

2

的重塑功能(在統計)做到這一點很容易:

reshape(data, timevar='assessment', idvar='subj', dir='wide') 

或者僅僅得到test1的結果:

reshape(subset(data, select=-test2), timevar='assessment', idvar='subj', dir='wide')