Diese Art von geholfen zu replizieren: How to do vlookup in Runter Verwendung des in R Merge Vlookup
Problem: Ich habe eine Liste von Maschinennummern in der Datenbank und dass die Notwendigkeit, eine Maschinengeschwindigkeit mit ihnen (z $ 20.00) zugeordnet hat. In einer CSV-Datei (machine_rates.csv) habe ich eine Liste dieser Maschinennummern mit der zugehörigen Maschinenrate (Spalten A & B).
Ich habe versucht, mit MERGE
für diese, aber aus irgendeinem Grund schafft es eine Menge von NA's über den Datenrahmen, obwohl ich die all.x = TRUE
habe. Es sieht fast so aus, als ob eine Maschine # für diese Zeile nicht angezeigt wird und die ganze Zeile in NA verwandelt wird. Das führt mich dazu zu glauben, dass ich die MERGE
Funktion nicht richtig verstehe (lies viele Beiträge durch, die versuchen, das Äquivalent eines vlookup in R zu finden).
Also hier unten, habe ich versucht, einen neuen Datenrahmen durch die Zusammenführung zu erstellen, aber beim Zusammenführen, wie sagen Sie es eine neue Spalte zu erstellen, um diese merged
Maschinenraten zu setzen?
dBase = dbReadTable(conn, "Mfng_Data")
mBase = read.csv("Machine_Rates.csv")
dBase2 = merge(dBase, mBase, by.x = "machine_number", by.y = "machine_number",
all.x = TRUE)
Edit:
Gibt es eine Möglichkeit, um alle Elemente sehen und zu erhalten? dBase enthält etwa eine Million Datensätze (etwa 1 m Zeilen x 70 c Matrix). Also, wenn es 150 verschiedene Maschinentarife gibt, müsste ich all diese auflisten oder ist es möglich, diese Werte in der CSV zu "indexieren", indem man die Maschinennummer in mBase mit der Maschinennummer in dBase abgleicht?
Entschuldigung, ich will nicht ein Schmerz sein, aber wenn ich die referenzierte SO-Post unten verstehe, muss ich Subdatenrahmen aus dem Hauptdatenrahmen erstellen? So etwas wie folgt aus: 'dBase1 = data.frame (machine_number) mBase1 = data.frame (machine_number) dBaseNew = merge (x = dBase1, y = mBase1, durch = "machine_number", alle.x = TRUE) ' Dann sollte dies eine neue" dBase "geben mit 1 mehr Spalte zeigt die Maschine Preise pro Maschinennummer, richtig? –
Die dbase und mbase data.frames müssen nur eine gemeinsame Spalte haben; in Ihrem Fall wäre es 'machine_name'. Sie können so viele andere Informationsspalten haben, wie Sie möchten. Dann hätten Sie 'mymerged_df <- left_join (dbase, mbase, by =" machine_number ")'. Sie können zuerst alle Spalten aus 'mbase' entfernen, mit Ausnahme von' machine_name' und was auch immer die 'rate' Spalte vor dem Join aufgerufen wird. – akaDrHouse