forked from gmanova/excel2R
-
Notifications
You must be signed in to change notification settings - Fork 0
/
merge vlookup.R
51 lines (29 loc) · 1.4 KB
/
merge vlookup.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# pre-session options
rm(list = ls())
# getwd()
# setwd("C:\\Users\\User\\Dropbox (Personal)\\Personal\\Courses\\Excel2R\\Dataframes")
# create a dataframe of mtcars:
mtcars <- data.frame(mtcars)
# since the car names are rownames, they are not "available" as a column - fixing that:
# adding the car names as a column, and deleting the row names:
mtcars$carName <- rownames(mtcars)
rownames(mtcars) <- NULL
# now let's import the lookup table:
countries <- read.csv("https://www.dropbox.com/s/m6tkyuolbckkyb4/mtcars_countries.csv?dl=1")
write.csv(mtcars, "mtcars.csv")
write.csv(countries, "countries.csv")
# merge the lookup table to the main mtcars table based on the "model" column
# NOTE: if you don't explicitely tell which columns to join, it'll join all:
mtcars_merged <- merge(mtcars, countries, by.x = "carName", by.y = "model")
# now with explicit column selection:
mtcars_merged <- merge(mtcars, countries[,c("model","manf_Country")],
by.x = "carName", by.y = "model")
# or just use column numbers:
mtcars_merged <- merge(mtcars, countries[,1:2],
by.x = "carName", by.y = "model")
# with dplyr:
library(dplyr)
# without excluding columns
mtcars_merged_DL1 <- left_join(mtcars, countries, by = c("carName" = "model"))
# excluding the useless columns
mtcars_merged_DL2 <- left_join(mtcars, select(countries, c(1:2)) , by = c("carName" = "model"))