Ich habe ein Dataframe df und möchte eine neue Spalte mit dem Minimalwert nach Gruppe einer zweiten Spalte füllen. Frühere Posts behandeln dieses Problem nicht im Zusammenhang mit neuen Spalten, während die ursprünglichen Zeilen und Spalten des Datenrahmens beibehalten werden.neue Spalte mit mutieren aus Minimalwert nach Gruppe einer anderen Spalte erstellen
diese Abtastwerteingang Angenommen:
a <- c(1,1,1,1,2,2,2,2)
b <- c(NA,1,2,2,3,5,6,NA)
df <- data.frame(a,b)
df
a b
1 NA
1 1
1 2
1 2
2 3
2 5
2 6
2 NA
Was möchte ich diese Ausgabe zu erreichen ist:
a b Min_b
1 NA 1
1 1 1
1 2 1
1 2 1
2 3 3
2 5 3
2 6 3
2 NA 3
Hier sind meine Versuche mit entsprechenden Ausgang:
df %>% group_by(a) %>% mutate(Min_b = min(b, na.rm = TRUE))
a b Min_b
1 NA 1
1 1 1
1 2 1
1 2 1
2 3 1
2 5 1
2 6 1
2 NA 1
Die oben gibt das Minimum von Spalte b anstelle des Minimums von Spalte b durch die Gruppen von Spalte a (dh I will das letztere). Danke
df1 %>% group_by(a) %>% mutate(Min_of_b = top_n(-1, wt = b))
Error in is_scalar_integerish(n) : argument "n" is missing, with no default
für irgendwelche Vorschläge über alternative Möglichkeiten, dies zu tun:
df %>% group_by(a) %>% top_n(-1, wt = b)
a b
1 1
2 3
Die oben genannten Arbeiten für die richtigen Werte zu finden, aber scheint nicht innerhalb mutieren zu arbeiten, wie folgt!
Es wäre viel einfacher für uns zu help, wenn Sie Beispieldaten in Ihrer Frage angegeben haben, vielleicht so einfach wie 'dput (head (df))'. Außerdem ist mir nicht klar, wie Ihre erwartete Ausgabe aussehen soll. – r2evans
Nicht klar, wie Sie Ihre ideale Ausgabe erwarten, aber basierend auf dem, was Sie sagten, sollten Sie 'df%>% group_by (id)%>% mutate (neue_spalte = min (zweite_spalte))' stattdessen verwenden. – AntoniosK
Überprüfen Sie Ihre Paketversion? 'df%>% group_by (a)%>% muate (Min_b = min (b, na.rm = WAHR))' funktioniert für mich .... – A5C1D2H2I1M1N2O1R2T1