【问题标题】:How to further filter variable within a list that has multiple data.frame如何在具有多个 data.frame 的列表中进一步过滤变量
【发布时间】:2020-12-02 17:55:17
【问题描述】:

我有一个 data.frame 列表,并希望根据变量列表过滤变量。

我使用的代码是

datalist1<-map(datalist, function(.x) .x <-.x %>% select(any_of(Valst$Var.name)))

如果我的数据列表有 5 个 data.frame:data1, data2, data3, data4, data5

Q1:如果我只想用 Valst$Var.name 过滤掉data2、data3、data4,我该怎么办? Q2:如果我想在data3中保留额外的变量var6怎么办?

我们将非常感谢任何有关这方面的指导。

【问题讨论】:

    标签: r


    【解决方案1】:

    Q1:如果我只想用 Valst$Var.name 过滤掉data2、data3、data4,我该怎么办?

    只将那些列表项传递给map

    datalist1[2:4] <- map(
      datalist[2:4], 
      function(.x) .x <-.x %>% 
        select(any_of(Valst$Var.name))
    )
    

    Q2:如果我想在data3中保留额外的变量var6怎么办?

    这通常很难回答。也许您制作了一个要保留的列列表,然后使用map2 遍历列列表和数据框列表中的相关项。

    cols_to_keep = rep(list(Vaslt$Var.name), 3)
    cols_to_keep[[2]] = c(cols_to_keep[[2]], "var6")
    map2(
      datalist[2:4],
      cols_to_keep,
      function(.x, .y) .x <-.x %>% select(any_of(.y))
    )
    

    但是有很多方法可以处理特殊情况,哪一种有意义很大程度上取决于您如何检测它们(手动?if() 基于数据?基于其他数据?)以及处理方式有何不同是。

    【讨论】:

    • 对于第一季度,如果我有 100 个数据,我可以按其名称删除不需要的数据吗?
    • 第二季度的答案看起来不错。我们可以修改它,以便我可以以类似的方式将所有变量保留在 data1 中吗?
    • 是的,加油!如果没有样本数据,我认为我无法做到这一点,但试一试,如果您遇到困难,请提出一个新问题!
    猜你喜欢
    • 1970-01-01
    • 2017-07-13
    • 2020-04-17
    • 1970-01-01
    • 2022-11-15
    • 2011-06-30
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多