Ho un frame di dati che assomiglia a questo:Come utilizzare ddply per aggiungere una colonna a un frame di dati?
site date var dil
1 A 7.4 2
2 A 6.5 2
1 A 7.3 3
2 A 7.3 3
1 B 7.1 1
2 B 7.7 2
1 B 7.7 3
2 B 7.4 3
ho bisogno di aggiungere una colonna chiamata wt
a questo dataframe che contiene il fattore di ponderazione necessari per calcolare la media ponderata. Questo fattore di ponderazione deve essere derivato per ciascuna combinazione di site
e date
.
L'approccio che sto utilizzando è quello di costruire prima una funzione che calcola il fattore di pesatura in:
> weight <- function(dil){
dil/sum(dil)
}
quindi applicare la funzione per ogni combinazione di site
e date
> df$wt <- ddply(df,.(date,site),.fun=weight)
ma ottengo questo messaggio di errore:
Error in FUN(X[[1L]], ...) :
only defined on a data frame with all numeric variables
prova 'df = ddply (. Df, (data, luogo), trasformare, in peso = peso (dil))' – Ramnath
Grazie Ramnath, che ha funzionato perfettamente – matteo