Ich habe einen Datenrahmen, die 2 Gruppen für die gleiche Minute zurückgeben. Wie kann es gehandhabt werden, um meine erwartete Ausgabe zu erreichen?dplyr: Wie mehrere Werte zu behandeln
df<- read.table(header=TRUE,
text="
Company xxx yyyy zzzz cnt
abc 1 1 1 20
aaa 1 1 2 3
bbb 1 1 1 3
ddd 2 0 2 100
")
Ich habe versucht, unter Code
final= df %>%
group_by(xxx,yyyy) %>%
summarise(Topcomp=Company[c(which(min(cnt)==cnt))])
Im erhalten:
Error: expecting a single value
Ich möchte wie unten ausgegeben haben.
xxx yyyy Topcomp
<int> <int> <fctr>
1 1 1 aaa,bbb
2 2 0 ddd
Die flexibelste Lösung ist eine Liste Spalte , dh 'df%>% group_by (xxx, yyyy)%>% zusammenfassen (Topcomp = list (Firma [cnt == min (cnt)]))', obwohl sie ein wenig Übung brauchen, um damit zu arbeiten. – alistaire
Auch können Sie 'c' und' which' herausschneiden, wie ich unten kommentierte, da sie hier nichts tun. – alistaire