Ho qualche problema a eseguire una routine utilizzando il pacchetto dplyr. In breve, ho una funzione che prende un dataframe come input e restituisce un singolo valore (numerico); Mi piacerebbe essere in grado di applicare questa funzione a diversi sottoinsiemi di un dataframe. Sembra che dovrei essere in grado di usare group_by() per specificare i sottoinsiemi del dataframe, quindi passare alla funzione riepilogare(), ma non sono sicuro di come passare il (data-settima) dataframe insieme alla funzione I ' mi piace applicare.dplyr riepilogare con una funzione di un dataframe
Come un esempio semplificato, diciamo che sto utilizzando le iride set di dati, e ho una funzione abbastanza semplice, che mi piacerebbe applicare a diversi sottoinsiemi di dati:
data(iris)
lm.func = function(.data){
lm.fit = lm(Petal.Width ~ Petal.Length, data = .data)
out = summary(lm.fit)$coefficients[2,1]
return(out)
}
Ora, vorrei essere in grado di applicare questa funzione ai sottoinsiemi iris in base ad altre variabili, come Specie. Sono in grado di filtrare manualmente i dati, quindi il tubo lungo alla mia funzione, ad esempio:
iris %>% filter(Species == "setosa") %>% lm.func(.)
Ma mi piacerebbe essere in grado di applicare lm.func-ogni sottoinsieme dei dati , basato sulla specie. Il mio primo pensiero è stato quello di provare qualcosa di simile al seguente:
iris %>% group_by(Species) %>% summarize(coef.val = lm.func(.))
Anche se so che questo non funziona, la mia idea è quella di cercare di superare ogni sottoinsieme di iris alla funzione lm.func.
Per chiarire, vorrei finire con un dataframe con due colonne - una prima ad ogni livello della variabile di raggruppamento, ed una seconda con l'uscita di lm.func quando i dati sono limitati a un sottoinsieme specificato dalla variabile di raggruppamento.
È possibile utilizzare il riepilogo() in questo modo?
Questo risolto - grazie akrun! –