Warum merge führen, dass mehr Zeilen als die ursprünglichen Daten?
Wenn ich merge
zwei Daten-frames, die das Ergebnis mehr Zeilen hat als die ursprünglichen Daten.
In diesem Fall, die alle dataframe hat 104956 Zeilen, koppen hat 3968 Zeilen und alltest dataframe hat 130335 Zeilen. Normalerweise alltest gehabt haben sollte, die Zeilen, die gleich oder weniger als alle.
Warum ist diese inflation geschieht? Ich bin nicht sicher, wenn geben die reproduzierbare Beispiel würde helfen, wie es funktioniert in der vorherigen Instanzen, die ich haben verwendet es.
alltest <- merge(all, koppen, by = "fips", sort = F)
Wahrscheinlich, weil einer der beiden dataframes hatte doppelte Werte von
Oh wait, es gibt doppelte FIPS in der ALLE natürlich. Es soll nicht einmalig sein. Irgendeine Idee, wie kann ich die Zusammenführen kann, ohne eine Erhöhung dieser Zeilen?
Tut
Wie würden Sie verschmelzen Sie eindeutig erhöhen, ohne die Anzahl der Zeilen?
"Ich bin nicht sicher, wenn geben die reproduzierbare Beispiel würde helfen, wie es funktioniert in der vorherigen Instanzen, die ich haben verwendet es." Ein reproduzierbares Beispiel sollte das Problem reproduzieren Sie mit.
fips
.Oh wait, es gibt doppelte FIPS in der ALLE natürlich. Es soll nicht einmalig sein. Irgendeine Idee, wie kann ich die Zusammenführen kann, ohne eine Erhöhung dieser Zeilen?
Tut
nrow(koppen)==length(unique(koppen$fips))
zurück TRUE
? Wenn nicht, dann gibt es dupliziert Werte fips
Wie würden Sie verschmelzen Sie eindeutig erhöhen, ohne die Anzahl der Zeilen?
"Ich bin nicht sicher, wenn geben die reproduzierbare Beispiel würde helfen, wie es funktioniert in der vorherigen Instanzen, die ich haben verwendet es." Ein reproduzierbares Beispiel sollte das Problem reproduzieren Sie mit.
InformationsquelleAutor Geekuna Matata | 2014-06-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste, von
?merge
:Über Ihren link in die Kommentare:
So klar
koppen
kopiert hat, FIPS-codes. Die Prüfung des Datensatzes und der website, es scheint, dass viele der Bezirke sind in mehr als einem Klima der Klasse, also zum Beispiel die Grafschaft Ankorage, Alaska verfügt über drei Klima-Klassen:Die Lösung hängt davon ab, was Sie versuchen zu erreichen. Wenn Sie möchten, zu extrahieren alle Zeilen in
all
mit jedemFIPS
erscheinen, dass inkoppen
entweder dieser sollte funktionieren:Wenn Sie brauchen, um die Bibliothek der Landkreis und Staat Namen
all
, verwenden Sie diese:BEARBEITEN Basiert auf dem Austausch unten in die Kommentare.
So, da es manchmal mehrere Zeilen in
koppen
mit der gleichenFIPS
, aber unterschiedlicheCLS
wir brauchen einen Weg, um zu entscheiden, welche Zeilen (z.B., dieCLS
) zu Holen. Hier sind zwei Möglichkeiten:Sie sir sind ein life saver. Danke. 🙂
Ok, ein problem..ich brauche definitiv die Klasse auch. Wenn ich usingmerge(alle,einzigartig(koppen[c("STATE","COUNTY","KLASSE","FIPS")]),by="FIPS") , ist es wieder mehr als Zeilen. Aber der code funktioniert wunderbar, wenn ich nur verwenden, Zustand, Grafschaft, fips. Warum ist das so?
Es kann mehr als eine Klasse für einen bestimmten FIPS. Welche Klasse willst du? Wenn Sie möchten, dass alle von Ihnen, dann wird es dupliziert FIPS.
Das problem ist, dass, für eine gegebene FIPS, es ist mehr als ein CLS in
koppen
. Also, wenn Sie wollen, dass alle von Ihnen, erhalten Sie mehr als eine Zeile pro FIPS in den Seriendruck. Nehmen Ankorage, von meinem Beispiel. Wennall
hat eine Zeile mit FIPS=2020, und Sie möchten alle drei CLS vonkoppen
haben, dann haben Sie drei Zeilen in der merge für FIPS=2020. Wennall
hat mehrere Zeilen mit FIPS=2020, dann haben Sie drei Zeilen in das Ergebnis für jede Zeile inall
mit FIPS=2020.InformationsquelleAutor jlhoward