2017-08-17 4 views
0

Je lis beaucoup sur Internet et n'ai pas trouvé de solution. J'ai ce data.frame:Transformer une trame de données de longue à large avec toutes les valeurs dans les lignes

d <- data.frame(cat = letters[11:15], count = c(1:10)) 
e <- data.frame(cat = letters[11:15], count = c(11:20)) 
G <- rbind(d, e) 

    cat count 
1 k  1 
2 l  2 
3 m  3 
4 n  4 
5 o  5 
6 k  6 
7 l  7 
8 m  8 
9 n  9 
10 o 10 
11 k 11 
12 l 12 
13 m 13 
14 n 14 
15 o 15 
16 k 16 
17 l 17 
18 m 18 
19 n 19 
20 o 20 

Maintenant, je veux transformer la trame de données à l'échelle, mais les valeurs de comptage besoin d'être en lignes comme ceci:

cat k l m n o 
    1 2 3 4 5 
    6 7 8 9 10 
    11 12 13 14 15 
    16 17 18 19 20 

Je ne sais pas, comment pour le faire. Merci d'avance.

+0

Avez-vous une autre colonne dans votre ensemble de données pour déterminer les valeurs qui vont à quelle ligne votre résultat final? Sinon, je ne suis pas sûr de la logique pour déterminer l'ordre des valeurs dans chaque colonne. Par exemple. dans la colonne 'k', c (16, 11, 6, 1) serait aussi valide que c (1, 6, 11, 16) ... –

+0

cat k, l, m, n et o signifie les numéros de compte de un jour, tandis que le compte est le chiffre réel de la transaction comptable. Ainsi, la revue recueille toutes les transactions par ligne et je veux maintenant collecter toutes les transactions du numéro de compte k et les jeter dans une nouvelle colonne appelée k. La même chose pour tous les autres numéros de compte. Pour votre dernière question, l'ordre pourrait être décrit par l'ordre du data.frame original, donc c (1,6,11,16) serait ok. –

Répondre

1

Nous pouvons utiliser unstack

unstack(G, count~cat)