I searched the posts online to find a solution. But I could not determine. So I decided to ask for help. I have a list with data frames. I selected specific columns from each data frame and merged them. When I was collecting data from two data frames, I wanted to add a column that includes list names. But I could not achieve this. Here is sample data and what I tried.
Sample data and my attempt
2nd dataframe time <- seq(as.Date("2014-09-01"), by = "day", length.out = 12) temperature <- sample(c(12:23), replace = TRUE) weather <- sample(c("clear", "cloudy", "rain"), size = 12, replace = TRUE) paris <- data.frame(time, temperature, weather, stringsAsFactors = F) Select 1st and 2nd column from each data frame in the list and
I wanted to add something here to create the next perfect result with a new column, location. Please note that I trimmed the perfect result to save space.
time temperature location 1 2014-09-01 19 rome 2 2014-09-02 21 rome 3 2014-09-03 17 rome 13 2014-09-01 18 paris 14 2014-09-02 12 paris 15 2014-09-03 17 paris
I tried using cbind() as follows, although I knew this would not work.
lapply(ana, function(x) cbind(x, new = names(ana))) #$rome # time temperature new #1 2014-09-01 19 rome #2 2014-09-02 21 paris #3 2014-09-03 17 rome # #$paris # time temperature new #1 2014-09-01 18 rome #2 2014-09-02 12 paris #3 2014-09-03 17 rome
I have the feeling that setNames() has something to offer, and this can be done in a simple way. Although I could be wrong. Thank you so much for taking the time.
source share