Sto provando a fare una media ponderata in stile "group by" in R. Con alcuni media di base il codice seguente (usando il pacchetto plyr di Hadley) ha funzionato bene.group by in R, ddply con weighted.mean
ddply(mydf,.(period),mean)
Se uso lo stesso approccio con weighted.mean ottengo il seguente errore " 'x' e 'w' deve avere la stessa lunghezza", che non capisco perché la parte weighted.mean lavora fuori 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
ho pensato di scrivere una funzione personalizzata invece di utilizzare weighted.mean e poi passarlo a ddply o anche scrivere qualcosa di nuovo da zero con sottoinsieme. Nel mio caso sarebbe troppo lavoro spero, ma ci dovrebbe essere una soluzione più intelligente con quello che c'è già.
thx per eventuali suggerimenti in anticipo!
Questo è bello. Non aveva molto a che fare con le funzioni anonime finora. sembra davvero la pena dare un'occhiata. Non ho ancora trovato la sintassi/idea, ma ci penserò, grazie per il tuo aiuto! Hai bisogno di stampare tutto in una riga a causa di nessun "{}" in là? Dove posso imparare qualcosa sulle funzioni anonime? –
Bene, * tutti * queste funzioni '* apply',' by', ... usano funzioni anonime, quindi dovresti trovare molti esempi. Le parentesi graffe sono necessarie quando si raggruppa più di un comando. Infine, non hai una funzione anonima - puoi anche definirne una tua - ma usarle risparmia sulla digitazione :) –
e riguardo 'lapply (split (iris, species), weighted.mean)' o smth come quella ? – aL3xa