【问题标题】:Function to fetch several dataframes and bind them togheter - R获取多个数据帧并将它们绑定在一起的函数 - R
【发布时间】:2019-06-13 07:28:58
【问题描述】:

我在 sql 视图中有 20 个数据框,每年一个。它们被命名为“ZZZ_2017”、“ZZZ_2016”等。我使用 R 并想编写一个函数来获取这些数据帧,为年份添加一列,然后将它们绑定在一起,返回一个数据帧。

我创建了一个简单的函数来完成上述的一件事。它获取单个数据框并添加一列。 (附加代码)我在想是否有可能在我想绑定在一起的那一年循环该函数(year = c(1997:2017))......但我不知道该怎么做。

    function(year) {
    df <- tbl(con, paste0("ZZZ_", year)) %>%
    collect()
    df <- df %>% mutate(Year = year)
    }

【问题讨论】:

  • 如果您的数据帧在列表中,那么只需使用 do.call(rbind, list_of_dataframes)

标签: r


【解决方案1】:

我们可以试试

purrr::map_dfr(c(1997:2017), function(year){
                             df <- tbl(con, paste0("ZZZ_", year)) %>% collect()
                             }, .id='year')

【讨论】:

    【解决方案2】:

    试试这个...

    your.df <- as.data.frame(sapply(c(1997:2017), function(year) {
                  df <- tbl(con, paste0("ZZZ_", x)) %>%
                  collect()
                  df <- df %>% mutate(Year = year)
    }))
    

    【讨论】:

    • 我唯一改变的是我添加了 as.data.frame(sapply....,否则循环返回一个矩阵而不是一个数据帧。
    • 你是对的。我应该考虑到这一点。谢谢你。我会更新答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 2020-07-28
    相关资源
    最近更新 更多