The other answer posted so far claims to be a data.table
approach but replaces every single item hardcoded. Therefore, I feel obliged to post an alternative solution which uses a lookup table and an update on join:
library(data.table)
# read data from google drive
DT <- fread("https://drive.google.com/uc?id=1DEdJvAdACVv_Pc5IcgFBSGvDKm_GPrNE&export=download")
# create lookup table
lookup <- data.table(pickup_name = c("Safeway", "Whole Foods Market", "Pizzeria Delfina"),
pickup_zipcode = c(94107, 94107, 94110),
label = c("-H2", "-H1", "-H3")
)
# join with lookup table and update on join
DT[lookup, on = .(pickup_name, pickup_zipcode), pickup_name := paste0(pickup_name, label)]
# verify data are updated
DT[pickup_name %like% "-H.$", .(pickup_name, pickup_zipcode)]
pickup_name pickup_zipcode
1: Safeway-H2 94107
2: Whole Foods Market-H1 94107
3: Safeway-H2 94107
4: Whole Foods Market-H1 94107
5: Whole Foods Market-H1 94107
---
2003: Safeway-H2 94107
2004: Whole Foods Market-H1 94107
2005: Safeway-H2 94107
2006: Pizzeria Delfina-H3 94110
2007: Whole Foods Market-H1 94107
fread
reads data directly from Google Drive using this hint. DT
has about 60 K rows and 22 columns (about 9 MB on disk).