Ho un frame dati mytable
con risultati per due misurazioni, A e B, portati a un gruppo di persone.R: come calcolare le differenze in base ai livelli di un fattore?
person measure outcome
1 A 3.6
2 A 2.3
3 A 4.2
1 B 3.9
2 B 3.2
3 B 2.7
voglio calcolare per ogni persona la differenza tra i punteggi per A e B. Cioè, voglio ottenere:
person outcome_diff
1 -0.3
2 -0.9
3 1.5
ho cercato una risposta, ma ho trovato solo alcuni riguardo a trasformazioni all'interno dei livelli di un fattore, non attraverso di loro.
finalmente sono riuscita a lavorare fuori facendo:
mytable$outcome[mytable$measure=="B"] <- -1*mytable$outcome[mytable$measure=="B"]
outtable <- aggregate(outcome ~ person, data=mytable, FUN=sum)
Anche se funziona, mi chiedo come farlo senza rovinare la tabella originale. Inoltre, questa soluzione è abbastanza specifica per calcolare una differenza. Quale potrebbe essere un modo più generale per ottenere la stessa cosa?
grazie! Daremo un'occhiata a 'plyr'. Per quanto riguarda l'alternativa 'diff', non sono sicuro di averlo capito: dato che' outcome' ha lunghezza 6, 'diff (risultato)' dovrebbe avere lunghezza 5. Quindi per ottenere il risultato 'result_diff' si dovrebbe adicalmente seleziona gli elementi dispari di 'diff (risultato)', giusto? – DvD