1

I have several dataframes that look like this:

df1
Time Terrain 
1     Land
2     Land 
3     Land  
4     Land 

I want to take the column "Terrain" from each dataframe and put them all in a new one, giving the columns of the new dataframe the name of which dataframe it was extracted from. Should look like this:

combined_terrain

df1  df2  df3
Land Land Sea
Land Sea  Air
Land Sea  Land
Land Sea  Land

I know I have to use cbind but I have several dataframes and don't want to be typing each out. Do I loop it by making a list of the different dataframes?

zx8754
  • 52,746
  • 12
  • 114
  • 209
Bonono
  • 827
  • 1
  • 9
  • 18

1 Answers1

1

Place all the datasets (assuming that it starts with 'df' followed by numbers) in a list ('lst'). Then use lapply to extract the 'Terrain' and cbind it

setNames(do.call(cbind, lapply(lst, `[`, 'Terrain')), nm1)

data

nm1 <- ls(pattern="df\\d+")
lst <- mget(nm1)     
akrun
  • 874,273
  • 37
  • 540
  • 662