【问题标题】:How to pipe in dplyr如何在 dplyr 中进行管道传输
【发布时间】:2021-03-28 21:04:32
【问题描述】:

我正在尝试使用 dplyr 和 left_join 中的管道函数来清理一些元数据。设置变量....

library(openxlsx)
library(tidyverse)

mdat <- read.xlsx("https://journals.plos.org/plospathogens/article/file?type=supplementary&id=info:doi/10.1371/journal.ppat.1005511.s011",
                  startRow = 3, fillMergedCells = TRUE) %>%
  mutate(sample=Accession.Number)

dge$samples$sample=
 [1] "SRR1346026" "SRR1346027" "SRR1346028" "SRR1346029" "SRR1346030" "SRR1346031" "SRR1346032" "SRR1346033" "SRR1346034"
[10] "SRR1346035" "SRR1346036" "SRR1346037" "SRR1346038" "SRR1346039" "SRR1346040" "SRR1346041" "SRR1346042" "SRR1346043"
[19] "SRR1346044" "SRR1346045" "SRR1346046" "SRR1346047" "SRR1346049" "SRR1346048" "SRR1346050" "SRR1346051" "SRR1346052"

我正在尝试输入 dge$samples$sample,它是一个字符类。它需要成为一个名为 sample 的列的数据框,以便我可以通过左连接将 mdat 与其合并,以删除我没有样本的所有元数据。如果你运行 dim(mdat) 你会发现它是 35 x 15,我想把它减少到我实际有数据的 19 个样本,这些在 dge$samples$sample 列表中给出。我正在尝试使用以下代码首先将 dge$samples$sample 转换为一个数据框,其中有一列名为 sample 用于连接两者,并基本上删除了我不感兴趣的所有元数据。到目前为止,下面的代码是我的进步,但我认为我无法理解管道的工作原理。

test = data.frame(dge$samples$sample) %>%
  colnames(.) = c("sample") %>%
  left_join(
  .,
  mdat,
  by = sample,
  copy = FALSE,
  suffix = c(".x", ".y"),
  keep = FALSE,
  na_matches = c("na", "never")
)

【问题讨论】:

    标签: r dataframe dplyr


    【解决方案1】:

    为什么不检查它们是否在那里并过滤它们:

    mdat %>% filter( sample %in% dge$samples$sample )
    

    它比连接更容易理解和控制,性能应该不是问题。

    【讨论】:

      【解决方案2】:

      我认为你的代码可以简化为

      library(dplyr)
      test <- data.frame(sample = dge$samples$sample) %>%
                left_join(mdat, by = 'sample')
      

      或者内部连接也应该工作,使用基础 R :

      test <- merge(data.frame(sample = dge$samples$sample), mdat, by = 'sample')
      

      【讨论】:

        【解决方案3】:

        使用collapse

        library(collapse)
        sbt(mdat, sample %in% dge$samples$sample)
        

        【讨论】:

          猜你喜欢
          • 2019-07-30
          • 1970-01-01
          • 1970-01-01
          • 2015-01-07
          • 1970-01-01
          • 2018-09-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多