Ich möchte allen Spalten, die aus einem linken Join resultieren, ein Präfix hinzufügen.Präfix für alle Spalten, die sich aus left_join() mit ursprünglichen Tabellennamen ergeben
left_join()
hat die Möglichkeit, ein Suffix hinzuzufügen, wenn die Namen zwischen den beiden zu verbindenden Tabellen identisch sind. Es hat jedoch keine Option, dieses Suffix immer hinzuzufügen, auch wenn sie nicht identisch benannt sind. Und es gibt keine Option, stattdessen ein Präfix hinzuzufügen.
library(dplyr)
library(nycflights13)
flights2 <- flights %>% select(year:day, hour, origin, dest, tailnum, carrier)
airports2 <- airports
result <- flights2 %>% left_join(airports2, c("dest" = "faa")) %>% head()
Das Ergebnis:
Source: local data frame [6 x 14]
year month day hour origin dest tailnum carrier name
(int) (int) (int) (dbl) (chr) (chr) (chr) (chr) (chr)
1 2013 1 1 5 EWR IAH N14228 UA George Bush Intercontinental
2 2013 1 1 5 LGA IAH N24211 UA George Bush Intercontinental
3 2013 1 1 5 JFK MIA N619AA AA Miami Intl
4 2013 1 1 5 JFK BQN N804JB B6 NA
5 2013 1 1 5 LGA ATL N668DN DL Hartsfield Jackson Atlanta Intl
6 2013 1 1 5 EWR ORD N39463 UA Chicago Ohare Intl
Variables not shown: lat (dbl), lon (dbl), alt (int), tz (dbl), dst (chr)
Hier ist es nicht nur möglich ist, zu wissen, aus dem Ergebnis kommen, aus der ursprünglichen Tabelle in jeder Spalte kam.
Mit diesem Präfix werden Spaltennamen zuverlässig aus Tabellennamen und den Spaltennamen von Daten berechnet, die aus einer relationalen Datenbank geladen werden. Die in R
geladene und gespeicherte Datenbankstruktur und die Namenskonventionen für die relationale Datenbank werden zum Beispiel verwendet, um Primär- und Fremdschlüssel zu identifizieren. Diese werden dann verwendet, um die Joins einzurichten und später Daten von den Join-Ergebnissen abzurufen.
In a join, how to prefix all column names with the table it came from
'flights2 :: year' ist kein syntaktisch gültiger Name. Ich würde 'flights2_' oder' flights2' verwenden. – zx8754
Die relationale Datenbank (FileMaker) verwendet diese Namenskonvention und deshalb wollte ich die Namen beibehalten, auch wenn sie nicht ideal für R sind. Ich habe auch Spaltennamen, die mit Unterstrichen beginnen. Können Sie ein Beispiel geben, wo es ein Problem verursachen würde oder eine Neuformatierung erforderlich wäre? Ich verwende '[['] für die Indizierung. – Bobby
Da wir dplyr verwenden, versuchen Sie dieses Beispiel: 'mtcars $ col1 <- seq (nrow (mtcars)); Spaltennamen (mtcars) [12] <- "xx: yy"; mtcars%>% filter (xx :: yy> 5) ' – zx8754