【问题标题】:How to extract rows from multiple data tables for certain values for a column, using R?如何使用 R 从多个数据表中提取列的某些值的行?
【发布时间】:2020-04-02 02:39:16
【问题描述】:

我有多个结构相似的数据表。我想在每个表的 column1 中查找某些值,并将行提取到一个新文件中。 例如:

dt1:
X     Y    Z
cat   12   a
dog   13   b
man   14   c
bird  6    d

dt2  
X     Y     Z
cat   10    a
dog   11    c
man   14    d
woman 15    m

我想在 'dt1' 和 'dt2' 中提取 X 为“dog”或“woman”的行

这样的最终输出-

dt     X     Y    Z

dt1   dog   13    b
dt2   dog   11    c
dt2   woman 15    m

【问题讨论】:

    标签: r


    【解决方案1】:

    使用dplyr,您可以:

    bind_rows(mget(ls(pattern = "df")), .id = "df") %>%
     filter(X %in% c("woman", "dog"))
    
       df     X  Y Z
    1 df1   dog 13 b
    2 df2   dog 11 c
    3 df2 woman 15 m
    

    【讨论】:

      【解决方案2】:

      代码:

      do.call('rbind', list(do.call('cbind', list(dt = 'dt1', df1[df1$X %in% c('dog', 'woman'), ])),
                            do.call('cbind', list(dt = 'dt2', df2[df2$X %in% c('dog', 'woman'), ]))))
      
      #     dt     X  Y Z
      # 2  dt1   dog 13 b
      # 21 dt2   dog 11 c
      # 4  dt2 woman 15 m
      

      数据:

      df1 <- read.table(text='X     Y    Z
      cat   12   a
                        dog   13   b
                        man   14   c
                        bird  6    d', header = TRUE, stringsAsFactors = FALSE)
      
      df2 <- read.table(text = 'X     Y     Z
      cat   10    a
                        dog   11    c
                        man   14    d
                        woman 15    m', header = TRUE, stringsAsFactors = FALSE)
      

      【讨论】:

        【解决方案3】:

        我们可以使用rbindlist

        library(data.table)
        rbindlist(mget(paste0('df', 1:2)), idcol = 'df')[X %in% c('woman', 'dog')]
        #    df     X  Y Z
        #1: df1   dog 13 b
        #2: df2   dog 11 c
        #3: df2 woman 15 m
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-13
          • 1970-01-01
          • 1970-01-01
          • 2021-10-02
          • 2013-04-26
          • 2018-07-08
          • 2021-05-18
          • 2021-12-22
          相关资源
          最近更新 更多