Non sono nemmeno sicuro di come intitolare correttamente la domanda!R riorganizzare il dataframe: alcune righe alle colonne
Supponiamo che io sono un dataframe d:
dataframe attuale:
d <- data.frame(sample = LETTERS[1:2], cat = letters[11:20], count = c(1:10))
sample cat count
1 A k 1
2 B l 2
3 A m 3
4 B n 4
5 A o 5
6 B p 6
7 A q 7
8 B r 8
9 A s 9
10 B t 10
e sto cercando di ri-organizzare le cose in modo tale che ogni valore gatto diventa una colonna della propria, campione rimane una colonna (o diventa il nome della riga) e il conteggio sarà i valori nelle nuove colonne cat, con 0 dove un campione non ha un conteggio per un gatto. In questo modo:
desiderata di layout dataframe:
sample k l m n o p q r s t
1 A 1 0 3 0 5 0 7 0 9 0
2 B 0 2 0 4 0 6 0 8 0 10
Qual è il modo migliore per andare su questo?
Questo è quanto ho ottenuto:
for (i in unique(d$sample)) {
s <- d[d$sample==i,]
st <- as.data.frame(t(s[,3]))
colnames(st) <- s$cat
rownames(st) <- i
}
cioè scorrendo i campioni nel dataframe originale, e recepisce per ogni sottoinsieme campione. Quindi in questo caso ho
k m o q s
A 1 3 5 7 9
e
l n p r t
B 2 4 6 8 10
e questo è dove mi si blocca. Ho provato un sacco di cose con unire(), bind(), apply(), ... ma non riesco a trovare la cosa giusta. Inoltre, non posso fare a meno di chiedermi se quel ciclo sopra è un passo necessario - qualcosa con lo stack() forse?
Inutile dire che sono nuovo di R ... Se qualcuno mi può aiutare, sarebbe molto apprezzato!
PS Motivo per cui sto cercando di riorganizzare il mio dataframe è nella speranza di rendere più semplice la rappresentazione dei valori (cioè voglio mostrare l'effettivo df in un grafico in formato tabella).
Grazie!
L'operazione che si desidera eseguire è passata da "long" a "wide". Questa domanda è stata fatta e ha risposto molte volte prima. – nograpes
Le mie scuse. Ho cercato senza sosta tra qui e google, non riuscivo a trovare niente di simile a quello di cui avevo bisogno (non sapendo esattamente come chiamare ciò di cui ho bisogno non è d'aiuto). Cercherò "long"/"wide" ... – crs