Wie nummeriere / beschrifte ich die Datentabelle mit der Gruppennummer von group_by?

Ich habe eine tbl_df, wo ich willgroup_by(u, v) für jede bestimmte ganzzahlige Kombination, die mit(u, v).

BEARBEITEN: Dies wurde durch Hinzufügen behobengroup_indices() zurück indplyr 0.4.0

a) Ich möchte dann jeder eindeutigen Gruppe eine willkürliche eindeutige Nummernbezeichnung = 1,2,3 zuweisen ... z.B. Die Kombination (u, v) == (2,3) könnte Label 1 bekommen, (1,3) könnte 2 bekommen und so weiter. Wie mache ich das mit einemmutate(), ohne eine dreistufige Zusammenfassung und Selbstverknüpfung?

dplyr hat eine ordentliche Funktionn(), aber das gibt die Anzahl der Elementeinnerhalb seine Gruppe, nicht die GesamtNummer der Gruppe. Imdata.table Dies würde einfach aufgerufen werden.GRP.

b) Eigentlich was ich wirklich einem String / Character Label zuordnen möchte ('A', 'B', ...). Aber die Nummerierung von Gruppen nach ganzen Zahlen ist gut genug, weil ich sie dann verwenden kanninteger_to_label(i) wie nachstehend. Es sei denn, es gibt eine clevere Möglichkeit, diese beiden zusammenzuführen? Aber schwitzen Sie diesen Teil nicht.

set.seed(1234)

# Helper fn for mapping integer 1..26 to character label
integer_to_label <- function(i) { substr("ABCDEFGHIJKLMNOPQRSTUVWXYZ",i,i) }

df <- tbl_df(data.frame(u=sample.int(3,10,replace=T), v=sample.int(4,10,replace=T)))

# Want to label/number each distinct group of unique (u,v) combinations
df %>% group_by(u,v) %>% mutate(label = n()) # WRONG: n() is number of element within its group, not overall number of group

   u v
1  2 3
2  1 3
3  1 2
4  2 3
5  1 2
6  3 3
7  1 3
8  1 2
9  3 1
10 3 4

KLUDGE 1: could do df %>% group_by(u,v) %>% summarize(label = n()) , then self-join

Antworten auf die Frage(5)

Ihre Antwort auf die Frage