Load dplyr
library(dplyr)
## Warning: package 'dplyr' was built under R version 3.2.1
##
## Attaching package: 'dplyr'
##
## The following objects are masked from 'package:stats':
##
## filter, lag
##
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
Create first DF
n <- c(1:10)
s <- c("aa", "bb", "cc", "bb", "cc", "aa", "bb", "cc", "bb", "cc")
d <- c("casa", "casa", "casa", "lelo", "lelo", "lelo", "lelo", "lelo", "name", "name")
b <- c(TRUE, FALSE, TRUE, T, F, F, T, T, T, T)
df1 <- data.frame(n, b, s, d)
print(df1)
## n b s d
## 1 1 TRUE aa casa
## 2 2 FALSE bb casa
## 3 3 TRUE cc casa
## 4 4 TRUE bb lelo
## 5 5 FALSE cc lelo
## 6 6 FALSE aa lelo
## 7 7 TRUE bb lelo
## 8 8 TRUE cc lelo
## 9 9 TRUE bb name
## 10 10 TRUE cc name
Create second DF
s <- c("aa", "bb", "dd")
d <- c("casa", "lelo", "name")
sort <- c("a", "b", "d")
df2<- data.frame(s, d, sort)
print(df2)
## s d sort
## 1 aa casa a
## 2 bb lelo b
## 3 dd name d
Merge tables: method 1
z<-left_join (df1, df2, by=c("s", "d"))
## Warning in left_join_impl(x, y, by$x, by$y): joining factors with different
## levels, coercing to character vector
print(z)
## n b s d sort
## 1 1 TRUE aa casa a
## 2 2 FALSE bb casa <NA>
## 3 3 TRUE cc casa <NA>
## 4 4 TRUE bb lelo b
## 5 5 FALSE cc lelo <NA>
## 6 6 FALSE aa lelo <NA>
## 7 7 TRUE bb lelo b
## 8 8 TRUE cc lelo <NA>
## 9 9 TRUE bb name <NA>
## 10 10 TRUE cc name <NA>
Merge tables: method 2
z<- df1 %>% left_join(df2) # Matches all the columns with the same name in both columns
## Joining by: c("s", "d")
## Warning in left_join_impl(x, y, by$x, by$y): joining factors with different
## levels, coercing to character vector
print(z)
## n b s d sort
## 1 1 TRUE aa casa a
## 2 2 FALSE bb casa <NA>
## 3 3 TRUE cc casa <NA>
## 4 4 TRUE bb lelo b
## 5 5 FALSE cc lelo <NA>
## 6 6 FALSE aa lelo <NA>
## 7 7 TRUE bb lelo b
## 8 8 TRUE cc lelo <NA>
## 9 9 TRUE bb name <NA>
## 10 10 TRUE cc name <NA>
Lectures:
- [a] (https://cran.r-project.org/web/packages/dplyr/vignettes/two-table.html)