2017-03-17 2 views
0

Ich habe einen Datenrahmen mit 15k Zeilen und 45 Spalten (einschließlich Ganzzahlen, Datumsangaben, Strings, Boolean, ...).R: Indexvektor mit gleichem Index für Duplikate

var1 var2 var3 FS 12 31.12.2016 BX 65 30.06.2016 BI 28 31.03.2016 FS 12 31.12.2016

Einige dieser Zeilen sind identisch. Ich brauche jetzt eine zusätzliche Spalte eine Art Index mit identischen Einträgen für identische Zeilen wie die 1. und 4. Zeile in diesem Beispiel enthält:

index var1 var2 var3 1 FS 12 31.12.2016 2 BX 65 30.06.2016 3 BI 28 31.03.2016 1 FS 12 31.12.2016

ich eine Hash-Funktion verwenden könnte, aber das würde die ursprüngliche Zeile zerstören Auftrag. Im Idealfall wäre es eine zunehmende Zahl wie in meinem Beispiel.
Ich versuchte mein Glück mit duplicated(), aber es scheint, dass das hauptsächlich für Deduplizierung gedacht ist.
Auch könnte ich Schleifen schreiben, um alle Zeilen zu vergleichen und den richtigen Index abzuleiten, aber es gibt wahrscheinlich eine elegantere Weise, dies zu tun.

+2

'as.numeric (as.factor (gilt (df, 1, Paste, Kollaps = "-"))) verwenden können,' –

+1

, die nicht mit 1 beginnt, aber es passt absolut zu meinem Bedürfnis. Vielen Dank für die schnelle Hilfe! – Fiete

Antwort

1

Sie immer dplyr

library(dplyr) 
df=data.frame(var1=c("FS","BX","BI","FS"),var2=c(12,65,28,12)) 
df2 = df%>%group_by(var1,var2)%>%mutate(index=row_number())%>%ungroup() 
Verwandte Themen