Мы можем использовать join
library(data.table)
setDT(df1)[df2,c('cars', 'accidents') := .(cars, accidents),
on = .(FIPS)][is.na(cars), c('cars', 'accidents') := .(0, 0)][]
# Stabr Area_name trucks FIPS cars accidents
#1: IL Cook 16.8 72000 10435 89
#2: AL Autauga County 13.8 31088 0 0
#3: CA Orange 9.8 32080 1547 5
#4: AZ Maricopa 30.9 4000 1571 19
#5: CA Los Angeles 21.2 1022 6759 100
данные
df1 <- structure(list(Stabr = c("IL", "AL", "CA", "AZ", "CA"), Area_name = c("Cook",
"Autauga County", "Orange", "Maricopa", "Los Angeles"), trucks = c(16.8,
13.8, 9.8, 30.9, 21.2), FIPS = c(72000L, 31088L, 32080L, 4000L,
1022L)), class = "data.frame", row.names = c("2", "3", "4", "5",
"6"))
df2 <- structure(list(county = c("Cook", "Orange", "Maricopa", "Los Angeles"
), state = c("Illinois", "California", "Arizona", "California"
), FIPS = c(72000L, 32080L, 4000L, 1022L), cars = c(10435L, 1547L,
1571L, 6759L), accidents = c(89L, 5L, 19L, 100L)), class = "data.frame",
row.names = c("2",
"3", "4", "5"))