Mam problem z wykonaniem procedury przy użyciu pakietu dplyr. W skrócie, mam funkcję, która pobiera ramkę danych jako dane wejściowe i zwraca pojedynczą (liczbową) wartość; Chciałbym móc zastosować tę funkcję do kilku podzbiorów ramek danych. Wydaje mi się, że powinienem móc użyć funkcji group_by() w celu określenia podzbiorów frameworka, a następnie potoku do funkcji summary(), ale nie jestem pewien, jak przekazać (podzieloną) ramkę danych wzdłuż funkcji I ' Chciałbym się zgłosić.dplyr podsumowuje za pomocą funkcji ramki danych
W uproszczonym przykładzie, powiedzmy, że używam tęczówki zbiór danych, i mam dość prostą funkcję, które chciałbym, aby zastosować się do kilku podgrupach danych:
data(iris)
lm.func = function(.data){
lm.fit = lm(Petal.Width ~ Petal.Length, data = .data)
out = summary(lm.fit)$coefficients[2,1]
return(out)
}
Teraz chciałbym móc zastosować tę funkcję do podzbiorów tęczówki na podstawie innej zmiennej, takiej jak Gatunek. Jestem w stanie ręcznie filtrować dane, a następnie wzdłuż rury do mojej funkcji, na przykład:
iris %>% filter(Species == "setosa") %>% lm.func(.)
Ale chciałbym, aby móc zastosować lm.func do każdego podzbioru danych , na podstawie gatunków. Moją pierwszą myślą było spróbować czegoś tak:
iris %>% group_by(Species) %>% summarize(coef.val = lm.func(.))
Choć wiem, że to nie działa, mój pomysł jest, aby spróbować przejść każdy podzbiór tęczówki do funkcji lm.func.
Aby to wyjaśnić, chciałbym otrzymać ramkę danych z dwiema kolumnami - pierwszą z każdym poziomem zmiennej grupującej i drugą z wynikiem lm.func, gdy dane są ograniczone do podzbiór określony przez zmienną grupującą.
Czy można użyć podsumowania() w ten sposób?
To rozwiązało - dzięki akrun! –