Ich habe eine Basis df mit dem Titel help.a
und ich versuche, help.b
beitreten, aber wenn ich in help.b
lesen die ID-Variable ist numerisch und nicht die gleiche Länge/Format wie die ID-Variable in help.a
. Ich versuche, mit Charaktervariablen zu bleiben, weil left_join sie in Zeichen ändert, wenn die Ebenen des Faktors unterschiedlich sind.Wie können Zeichen zu Strings unterschiedlicher Größe hinzugefügt werden, um Datenrahmen über left_join zusammenzufügen?
help.a <- data.frame(id = as.character(c("00005", "00010", "00010", "00010", "00025", "00025", "00324", "00324")),
var_a = c(NA, 2, 2, 2, NA, NA, NA, NA),
var_b = c(4, NA, NA, 4, 4, 4, NA, NA))
help.b <- data.frame(id = c(5, 10, 324),
var_c = c(2, 2, 2),
var_d = c(4, NA, 6))
Mein Ansatz ist bisher jedoch help.b, um ein Zeichen zu ändern, ist es aufgrund der ids beizutreten versagt nicht passend:
help.b$id <- as.character(help.b$id)
left_join(help.a, help.b)
id var_a var_b var_c var_d
1 00005 NA 4 NA NA
2 00010 2 NA NA NA
3 00010 2 NA NA NA
4 00010 2 4 NA NA
5 00025 NA 4 NA NA
6 00025 NA 4 NA NA
7 00324 NA NA NA NA
8 00324 NA NA NA NA
Das ist mein gewünschtes Endergebnis:
id var_a var_b var_c var_d
1 00005 NA 4 2 4
2 00010 2 NA 2 NA
3 00010 2 NA 2 NA
4 00010 2 4 2 NA
5 00025 NA 4 NA NA
6 00025 NA 4 NA NA
7 00324 NA NA 2 6
8 00324 NA NA 2 6
und was ich denke, ich tun muß, ist in help.b
und ändern id, um ein Zeichen zu lesen und fügen Sie dann „0“ zu jeder ID, aber alle müssen in der Länge 5 Zeichen gleich ... zB Zeile 1 würde vier brauchen "0's" und Zeile 2 würden drei "0's" benötigen. Auf diese Weise bemerkt left_join übereinstimmende Zeichenfolgen und verbindet sich entsprechend.
Jede Hilfe wird sehr geschätzt.
Ich möchte die 0's zu dem 'help.b' df though hinzufügen ... und wenn ich diesen Befehl verwende, erhalte ich eine Fehlermeldung mit dem Hinweis 'Fehler in sprintf ("% 05d ", help.b $ id): ungültiges Format '% 05d'; Verwenden Sie das Format% s für Zeichenobjekte ' – bpace
Und wenn ich das über Befehl ausführen ... Es ändert die IDs auf sequentielle 00001, 00002, 00002, 00002, 00003, usw. – bpace
Ok, die help.a $ ID ist ein Faktor. Und das bedeutet wahrscheinlich auch, dass Werte enthalten sind, die keine Zahlen sind. Versuchen Sie, '% 05d' in'% 05s' zu ändern. –