Estoy tratando de hacer un "grupo por" - media ponderada por estilo en R. Con algunas medias básicas el siguiente código (usando el paquete plyr de Hadley) funcionó bien.agrupar por en R, ddply con weighted.mean
ddply(mydf,.(period),mean)
Si utilizo el mismo enfoque con weighted.mean me sale el siguiente error " 'x' y 'w' debe tener la misma longitud", lo que no entiendo porque la parte weighted.mean trabaja fuera ddply.
weighted.mean(mydf$mycol,mydf$myweight) # works just fine
ddply(mydf,.(period),weighted.mean,mydf$mycol,mydf$myweight) # returns the erros described above
ddply(mydf,.(period),weighted.mean(mydf$mycol,mydf$myweight)) # different code same story
pensé en escribir una función personalizada en lugar de utilizar weighted.mean y luego pasarla a ddply o incluso escribir algo nuevo desde cero con subconjunto. En mi caso, sería demasiado trabajo con suerte, pero debería haber una solución más inteligente con lo que ya está allí.
Gracias por cualquier sugerencia con anticipación!
Esto es agradable. Hasta ahora no ha tenido mucho que ver con las funciones anónimas. parece realmente vale la pena echarle un vistazo. Todavía no entiendo la sintaxis/idea, pero lo investigaré, gracias por su ayuda. ¿Necesita imprimir todo en una línea porque no hay "{}" allí? ¿Dónde puedo aprender algo sobre las funciones anónimas? –
Bueno, * todas * estas funciones '* apply',' by', ... usan funciones anónimas, por lo que debes encontrar muchos ejemplos. Las llaves se necesitan una vez que agrupas más de un comando. Por último, no tiene que utilizar una función anónima, sino que también puede definir la suya propia, pero al usarla se guarda al escribir :) –
¿Qué pasa con 'lapply (split (iris, especie), weighted.mean)' o algo así? ? – aL3xa