2016-10-17 2 views
-4

Unten sind zwei Beispieltabellen in RWie Sie einen Spaltenwert in einer Tabelle aus einer anderen Spalte Wert in verschiedenen Tabelle in R

Table1

ID Name 
1 a 
2 b 
3 c 
4 a 
5 b 
6 c 

Table2

ID Age 
2 20 
4 40 
6 60 
10 100 
50 500 

Ich möchte erstellen eine Tabelle wie folgt (durch Hinzufügen einer Spalte Age in Table1 und ziehen Sie den Wert von Table2 basierend auf ID-Spalte:

Ausgabetabelle

ID Name Age 
1 a  - 
2 b  20 
3 c  - 
4 a  40 
5 b  - 
6 c  60 

jemand könnte mir dabei helfen?

+0

die akzeptierte Antwort in der markierten dupliziert verwendet Basispakete. –

Antwort

-1

können Sie sqldf Bibliothek verwenden.

?sqldf 

SQL select on data frames 

Description 

SQL select on data frames 


# import the sqldf library. 
# if you get "Error in library(sqldf) : there is no package called 'sqldf' you can install it with install.packages('sqldf') 
library(sqldf) 

# your first df 
table1 <- read.csv('/tmp/df1.csv',stringsAsFactors = F) 

table2 <- read.csv('/tmp/df2.csv',stringsAsFactors = F) 

table2 

# express your query in terms of an SQL statement. 
# in this case you want ALL the records from the first table and ALL the records from the second one which are 'matching' with the records in the first one 
# In terms of SQL, this is a LEFT JOIN statement 
sql <- 'select table1.id, name, age from table1 left join table2 on (table1.id = table2.id)' 

# run your query 
sqldf(sql) 

und das ist das Ergebnis:

id name age 
1 1 a - 
2 2 b 20 
3 3 c - 
4 4 a 40 
5 5 b - 
6 6 c 60 

NB: Wenn Sie die passenden Datensätze nicht 1 für die ID haben, 3, 5 in table2, können Sie Ihre SQL-Anweisung von links aus Beitreten zu einem LINKEN OUTER JOIN. Fühlen Sie sich frei, mich für weitere Erklärungen zu fragen, danke.

+0

Danke Ronak. Gibt es einen Weg mit dem Basispaket, d. H. Ohne zusätzliches Paket? –

Verwandte Themen