I have about 100 dataset pairs that need to be merged into single data sets, I have looked at posts that show how to merge many data sets together at once (e.g., here and here), but my issue is unique. My real-world data are stored on my hard drive and are similarly named (e.g., household2010
, household2011
, household2012
and person2010
, person2011
, person2012
. They don't need to be loaded into the global environment.Example below.
Working data:
library(tidyverse)
household2010 <- tribble(
~id, ~var2, ~var3, ~var4, ~var5,
"1", "1", "1", "a", "d",
"2", "2", "2", "b", "e",
"3", "3", "3", "c", "f"
)
person2010 <- tribble(
~id, ~var6, ~var7,
"1", "1", "1",
"2", "2", "2",
"3", "3", "3",
"4", "4", "4"
)
household2011 <- tribble(
~id, ~var8, ~var9, ~var10,
"1", "1", "1", "1",
"2", "2", "2", "2",
"3", "3", "3", "3",
"4", "4", "4", "4"
)
person2011 <- tribble(
~id, ~var11, ~var12, ~var13,
"1", "1", "1", "1",
"2", "2", "2", "2",
"3", "3", "3", "3",
"4", "4", "4", "4",
"5", "5", "5", "5"
)
I need to merge household2010
with person2010
and create a new dataset called hhperson2010
. I need to do this to household2011
and person2011
too. Individually I could do:
hhperson2010 <- left_join(household2010, person2010, by = "id")
hhperson2011 <- left_join(household2011, person2011, by = "id")
This gets clunky when I have over a 100 data pairs. Can I use lapply
to have it go through a list of the data sets and merge? Something like:
dflist1 <- list(household2010, household2011)
dflist2 <- list(person2011, person2011)
lapply(function(x) left_join(dflist, dflist2, by = "id")