short version: Wie ersetze ich Werte innerhalb eines Datenrahmens durch einen String innerhalb eines anderen Datenrahmens?
längere Version: Ich bin ein Biologe, der mit vielen Bienenarten arbeitet. Ich habe einen Datensatz mit vielen Tausenden Bienen. Jede Reihe hat eine eindeutige Bienen-ID # mit allen relevanten Informationen über diese Probe (Daten der Erfassung, GPS-Ort, etc.). Die Arteninformationen für jede Biene wurden nicht eingegeben, da es lange dauert, sie zu identifizieren. Wenn ich IDing mache, lande ich in Kisten mit hundert Bienen, alle derselben Spezies. Ich gebe diese in einen separaten Datenrahmen ein. Ich versuche, Code zu schreiben, der die ursprüngliche Datendatei mit Speziesinformationen (Familie, Klasse, Spezies, Geschlecht, usw.) aktualisiert, während ich die Bienen identifiziere. Momentan ist die Artinformation in der ursprünglichen Datendatei leer und wird als NA innerhalb von R interpretiert. Ich möchte, dass R alle eindeutigen Bienen-IDs findet und die Art-Info ausfüllt, aber ich habe Probleme herauszufinden, wie Ersetzen Sie die NA-Werte durch eine Zeichenfolge (z. B. "Andrenidae")
Hier ist ein einfaches Beispiel für das, was ich versuche zu tun:
%Vor%Ich ersetze also Dinge, wie ich will, aber mit einer Nummer anstelle des Familiennamens (eine Zeichenfolge). Was ich schließlich tun möchte, ist, eine kleine Schleife zu schreiben, um alle Arteninformationen hinzuzufügen, z. B .:
%Vor%Vielen Dank im Voraus für jede Beratung!
Prost,
Zak
BEARBEITEN:
Ich habe gerade bemerkt, dass die ersten zwei Methoden jedes Mal eine neue Spalte hinzufügen, was zu Problemen führen würde, wenn ich Arteninformationen mehrmals hinzufügen müsste (was ich normalerweise tue). Zum Beispiel:
%Vor%Gibt es eine Möglichkeit, die Spalten zu reduzieren, so dass ich einen einheitlichen Datenrahmen habe? Oder eine Möglichkeit, die RawData zu aktualisieren, anstatt jedes Mal eine neue Spalte hinzuzufügen? Danke im Voraus!
Hier ist eine Funktion, von der ich denke, dass sie für Sie funktioniert. Dies verwendet match
zum Suchen und Indexieren von Werten in Ihrem Anmerkungsdatenrahmen und ersetzt dann die Werte in den rawData.
Eine data.table
Lösung, die speicher- und zeiteffizient ist.
stringsAsFactors = F
für rbindlist (eine super-schnelle Version von do.call (rbind, list) / rbind) rawData
hinzugefügt und die Familie entfernt. Erstellen Sie die Daten -
%Vor%oder
%Vor%Für welche Daten Sie sich auch interessieren