He estado tratando de entender qué y cómo funciona plyr probando diferentes variables y funciones y viendo qué resultados. Así que estoy más buscando una explicación de cómo funciona plyr que la solución específica que responde. He leído la documentación, pero mi cerebro de novato aún no la está obteniendo.Aprendiendo a comprender plyr, ddply
Algunos datos y nombres:
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
Pregunta 1: Resumir frente Transformar Sintaxis
Así que si entro: ddply(mydf, .(Model), summarise, sum = Length+Length)
me sale:
`Model ..1
1 a 2
2 a 4
3 b 6
4 b 20
5 c 40
6 c 60
y si enter: ddply(mydf, .(Model), summarise, Length+Length)
Obtengo el mismo resultado.
Ahora bien, si el uso transformar: ddply(mydf, .(Model), transform, sum = (Length+Length))
me sale:
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
Pero si digo que al igual que el primer resumen: 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
Entonces, ¿por qué la adición de "suma = " ¿Hacer la diferencia?
Pregunta 2: ¿Por qué no funcionan?
ddply(mydf, .(Model), sum, Length+Length)
# error en función de (i): objeto 'Longitud' no encontraron
ddply(mydf, .(Model), length, mydf$Length) #Error in .fun(piece, ...) :
2 argumentos pasados a 'longitud', que requiere de 1
Estos ejemplos son más para mostrar que en alguna parte I' m fundamentalmente no entendiendo cómo usar plyr.
Se agradecen todos los informes o explicaciones.
Además, creo que el primer conjunto de ejemplos en el OP es simplemente la diferencia en el comportamiento predeterminado entre 'summmarise' y' transform' si omite incluir una etiqueta como 'val =' en la expresión. 'summarise' aparentemente proporcionará su propio nombre, mientras que' transform' parece ignorarlo. – joran