In advance, I hope I've presented a data example appropriately - I haven't posted here before and I'm new to R as well. I have a LARGE dataset where I would like to create a new column with regional name (5 different) based on a lot of zip codes (1089 different) as shown below.
id zip
1 8000
2 7700
3 1050
4 5000
5 6880
6 8620
id zip region_name
1 8000 central
2 7700 north
3 1050 capital
4 5000 south
5 6880 central
6 8620 central
Due to the many different zip codes, I have assigned each of the 1089 zip codes into five lists() according to the five regions: "north", "central", "south", "capital", and "sjaelland". Can anyone help me with a good code/solution?
Thanks!
I suggest to use stack to make your zip code named list a data.frame as well and then merge/left_join the tables
code
zip_code_df <- stack(zip_code_list)
names(zip_code_df) <- c("zip", "region_name")
left_join(df, zip_code_df, by = "zip")
results
id zip region_name
1: 1 8000 central
2: 2 7700 north
3: 3 1050 capital
4: 4 5000 south
5: 5 6880 central
6: 6 8620 central
data
df <- structure(list(id = 1:6, zip = c(8000L, 7700L, 1050L, 5000L, 6880L, 8620L)), row.names = c(NA, -6L), class = c("data.frame"))
zip_code_list <- list(
"north" = c(7700),
"central" = c(8000, 6880, 8620),
"capital" = c(1050),
"south" = c(5000)
)