Ho cercato di capire cosa e come funziona plyr attraverso il provare diverse variabili e funzioni e vedere quali risultati. Quindi sono più alla ricerca di una spiegazione di come funziona plyr rispetto a quello specifico che risolve. Ho letto la documentazione ma il mio cervello da principiante non lo sta ancora ottenendo.Imparare a comprendere plyr, ddply
Alcuni dati e nomi:
mydf<- data.frame(c("a","a","b","b","c","c"),c("e","e","e","e","e","e")
,c(1,2,3,10,20,30),
c(5,10,20,20,15,10))
colnames(mydf)<-c("Model", "Class","Length", "Speed")
mydf
Domanda 1: Riassumere contro Transform Sintassi
Quindi se entro: ddply(mydf, .(Model), summarise, sum = Length+Length)
ottengo:
`Model ..1
1 a 2
2 a 4
3 b 6
4 b 20
5 c 40
6 c 60
e se io inserire: ddply(mydf, .(Model), summarise, Length+Length)
Ottengo lo stesso risultato.
Ora, se l'uso di trasformare: ddply(mydf, .(Model), transform, sum = (Length+Length))
ottengo:
Model Class Length Speed sum
1 a e 1 5 2
2 a e 2 10 4
3 b e 3 20 6
4 b e 10 20 20
5 c e 20 15 40
6 c e 30 10 60
Ma se affermo che come la prima sintesi: ddply(mydf, .(Model), transform, (Length+Length))
Model Class Length Speed
1 a e 1 5
2 a e 2 10
3 b e 3 20
4 b e 10 20
5 c e 20 15
6 c e 30 10
Allora perché l'aggiunta di "somma = " fare la differenza?
Domanda 2: Perché questi non funzionano?
ddply(mydf, .(Model), sum, Length+Length)
#Error in funzione (i): oggetto 'Lunghezza' non trovato
ddply(mydf, .(Model), length, mydf$Length) #Error in .fun(piece, ...) :
2 argomenti passati a 'lunghezza', che richiede 1
Questi esempi sono più da dimostrare che da qualche parte I' fondamentalmente non capisco come usare plyr.
Eventuali anomalie o spiegazioni sono apprezzate.
Inoltre, credo che il primo insieme di esempi nell'OP sia semplicemente la differenza nel comportamento predefinito tra "riepiloga" e "trasformazione" se si trascura di includere un tag come "val =" nell'espressione. 'sumarise' apparentemente fornirà il proprio nome, mentre' transform' sembra ignorarlo. – joran