【问题标题】:Extract values from multiple data frames at the same time同时从多个数据帧中提取值
【发布时间】:2022-08-09 15:50:03
【问题描述】:

我正在尝试从具有相同格式的多个数据帧中提取特定数据点。数据很混乱,到处都是不需要的值。这是简化版

    df1     
    a   b   c
1   NA  6   NA
2   3   7   NA
3   NA  NA  4
            
            
    df2     
    a   b   c
1   NA  4   NA
2   6   1   NA
3   NA  NA  7
            
            
    df3     
    a   b   c
1   NA  9   NA
2   8   2   NA
3   NA  NA  4

此代码用于从一个 df1 中提取所需的数据,并将它们组合到一个新的数据帧中,并删除不需要的数据。

v1 <- df1[1,2]
v2 <- df1[2,2]
v3 <- df1[3,3]

df1 <- data.frame(v1, v2, v3)

所以现在 df1 看起来像这样:

    v1  v2  v3
1   6   7   4

如何一次性在所有三个数据帧中运行相同的代码?

    标签: r dataframe function loops


    【解决方案1】:

    这是一个 tidyverse 解决方案,它选择三个数据帧中每一个的相同元素。我认为这是必需的。它利用lapplydplyr::bind_rows() 的事实,当给定一个列表时,会将列表的元素绑定到单个数据帧中。

    library(tidyverse)
    
    dfList <- list(df1, df2, df3)
    
    lapply(
      dfList,
      function(x) {
        tibble(v1=x$b[1], v2=x$b[2], v3=x$c[3])
      }
    ) %>% 
    bind_rows()
    # A tibble: 3 × 3
         v1    v2    v3
      <int> <int> <int>
    1     6     7     4
    2     4     1     7
    3     9     2     4
    

    下次,请以更方便的形式提供您的测试数据,也许通过发布来自dput() 的输出。你会通过帮助别人帮助你来帮助自己。

    【讨论】:

      猜你喜欢
      • 2021-03-22
      • 2021-03-20
      • 1970-01-01
      • 2018-04-08
      • 2020-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多