2010-09-20 10 views
1

J'ai un grand ensemble de données avec une évaluation répétée entre sujets. Comment vais-je faire:R réorganiser le cadre de données au sein du sujet

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

Pour:

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

Merci,

Jon

Répondre

2

vous pouvez facilement y parvenir grâce à l'excellent Reshape/package reshape2 par hadley. Voici le code pour vous rendre à ce dont vous avez besoin

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

laissez-moi savoir si cela fonctionne pour vous.

+1

Je crois que cela devrait être "variable" au lieu de « test "dans la formule cast, comme ça: df = cast (df, subj ~ variable + évaluation). (Sauf si vous ajoutez variable_name = "test" à la ligne précédente). – Fojtasek

+0

c'est vrai. merci de l'avoir signalé. J'ai modifié le code en conséquence – Ramnath

2

La fonction Reshape (dans les statistiques) Est-ce assez facilement:

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

ou simplement obtenir les résultats pour test1:

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