Ich habe einen Datenrahmen (df), der 2,5 Millionen Zeilen hat. Beispieldatenrahmen sieht so aus:Wie bestimmte Zeilen in R extrahiert werden, ohne die gesamten Daten immer wieder durchlaufen zu müssen
PERMNO <- c(10000,10000,10001,10001,10001,10001, 10002,10002,10002)
TICKER <- c('OMFGA','OMFGA', 'GFGC', 'GFGC', 'GFGC', 'GFGC', 'MBNC', 'MBNC', 'MBNC')
date <- as.Date(c('1986-03-31','1986-04-30','1986-01-31', '1986-01-31', '1986-03-31', '1986-04-30', '1986-04-30','1986-05-30', '1986-05-30'))
df = data.frame(PERMNO, date, TICKER)
In diesem Beispiel gibt es 3 einzigartige PERMNO. Jetzt muss ich alle Daten für die gegebene PERMNO extrahieren und prüfen, ob es doppelte Daten gibt. Meine Absicht ist, Zeilen mit doppelten Daten für eine bestimmte PERMNO zu entfernen. Diese Vorgehensweise mache ich für alle einzigartigen PERMNO
Mein Ansatz: Ich verwende Subset-Funktion, um Daten für eine bestimmte PERMNO zu extrahieren und dann nach Dubletten in Daten zu überprüfen. Bei diesem Ansatz durchläuft mein Code jedes Mal die gesamten Daten (2,5 Millionen Zeilen im ursprünglichen Dataset), um Daten für eine bestimmte PERMNO zu extrahieren. Gibt es einen kürzeren Weg, dies zu tun? Da ich 22000 einzigartige PERMNO habe, dauert der Code in der For-Schleife ewig. Hier
ist der Code Ich verwende:
uniqueperm = unique(df$PERMNO)
lenperm = length(uniqueperm)
data_final = df[FALSE,]
for(i in 1:lenperm){
perm = uniqueperm[i]
df1 = filter(df, PERMNO == perm)
df1 = subset(df1,!duplicated(df1$date))
data_final = rbind(data_final,df1)
df1 = df1[FALSE,]
}
data_final
Ist das nicht ein Duplikat auf 'PERMNO' und' Datum', wenn Sie nach Duplikaten in jeder 'PERMNO'-Untermenge suchen? I.e. 'dupliziert (df [c (" PERMNO "," date ")]' Oder fehlt mir etwas Subtilität? – thelatemail
Können Sie Ihren Code hinzufügen (For-Schleife), damit wir etwas Referenz haben? –
Es würde helfen, wenn Sie den Code, den Sie ausführen, gepostet habe, bekomme ich, was Sie beschreiben, aber es wäre viel einfacher, es genau zu sehen. – jamzsabb