-1
Ich verwende die folgende Funktion, um eine Aggregationsoperation auszuführen, die die Freigabe nach bestimmten Labels berechnet.Spalten ändern Namen der Aggregationsausgabe
computeShare <- function(df, colX, colY) {
aggregate(as.formula(paste0(colY, '~', colX)),
df, function(x){length(x)/nrow(df)})
}
df_out <- computeShare(some_df, "colx", "coly")
Dies gibt Ausgang df_out
wie unten mit
colx coly
1 name1 1.897315e-02
2 name2 2.988709e-04
3 name3 7.081621e-04
Statt Spaltennamen coly
in df_out
oben, ich die Share
Namen will. Ich kann es über colnames(df_out)[2] <- "Share"
innerhalb der Funktion wie folgt tun.
computeShare <- function(df, colX, colY) {
df_out <- aggregate(as.formula(paste0(colY, '~', colX)),
df, function(x){length(x)/nrow(df)})
colnames(df_out)[2] <- "Share"
df_out
}
Ist dies der richtige Weg?
Sie müssen den Formelansatz für Aggregat nicht verwenden. Sie können stattdessen die 'list'-Methode verwenden, mit der Sie Namen hinzufügen können. – A5C1D2H2I1M1N2O1R2T1
@ A5C1D2H2I1M1N2O1R2T1 - Können Sie den Listenansatz näher erläutern? – user3206440
Wie in 'mit (df, Aggregat (Liste (share = coly), Liste (Colx = Colx), Funktion (x) {Länge (x)/nrow (df)}))' oder so ähnlich ... – A5C1D2H2I1M1N2O1R2T1