Betrachten Sie dieses Beispiel:dplyr: custum-Funktion in muate. Verwendet die volle Matrix anstelle von Chunks?
library(dplyr)
library(magrittr)
set.seed(123)
grp_s <- round(runif(4, 1, 10))
group <- rep(1:length(grp_s), grp_s)
dataF <- data.frame(grouping = group, var_a = runif(length(group)), var_b = runif(length(group)), var_c = runif(length(group)))
compute_it <- function(var_a, var_b){
sum(var_a[var_b > .5], na.rm = TRUE)
}
dataF %<>%
group_by(grouping) %>%
mutate(fix_it = compute_it(var_a, var_b))
So weit so gut. Jetzt anstelle von compute_it
, die als Argument Spaltennamen nimmt, möchte ich eine Funktion verwenden, die als Argument ein Stück der Daten (ein Stück für jeden Wert von grouping
) nimmt.
etwas Liste mit dieser Funktion:
compute_it_2 <- function(Data){
sum(Data$var_a[Data$var_b > .5], na.rm = TRUE)
}
wo compute_it
oben verwendet wird. Wie geht das?
Vielleicht Sie suchen 'tun'. Oder verwende 'dataF%>% group_by (Gruppierung)%>% nest()%>% muate (s = map (data, fix_it2))' – Axeman
@Axeman: Keine dieser Lösungen gibt den ursprünglichen Datenrahmen mit einer neuen Spalte fix_it_2 zurück (sie geben komplexe Datenstruktur zurück, die man analysieren muss) – user189035