簡體   English   中英

如何根據數據框中另一列的相交值過濾數據框列

[英]how to filter a dataframe column based on intersected values from another column in dataframe

我有兩個數據框。 我想根據來自另一個數據框gene_Annot 的相交值從expr_df 數據框中過濾基因ID。基本上我想將與gene_Annot 數據中的geneid 相交的基因保留在expr_df 中。 這就是我的數據集的樣子: 在此處輸入圖像描述

在此處輸入圖像描述 在此處輸入圖像描述 我在 R 中嘗試了這個命令:

expr_df <- expr_df %>% select(one_of(intersect(gene_annot$gene_id, colnames(expr_df))))

但是它給了我所有 ID 的 0 或 NA 值。

您提供的代碼應該可以工作。 但是,使用intersect()是多余的。 你應該刪除它。 此外dplyr::one_of()已被取代,您應該使用dplyr::any_of()

library(tidyverse)

d1 <- tibble(sample_id = paste0("GTEX", 1:4), 
             ENSG1 = rnorm(4, 5, 1),
             ENSG2 = rnorm(4, 50, 3),
             ENSG3 = rnorm(4, 20, 7),
             ENSG4 = rnorm(4, 3, 0.5))

d2 <- tibble(chr = 1:3, gene_id = c("ENSG1", "ENSG3", "ENSG4"))

d1 %>% 
  select(sample_id, any_of(d2$gene_id))
#> # A tibble: 4 × 4
#>   sample_id ENSG1 ENSG3 ENSG4
#>   <chr>     <dbl> <dbl> <dbl>
#> 1 GTEX1      5.22 25.0   2.62
#> 2 GTEX2      5.99 -2.46  2.18
#> 3 GTEX3      4.56 22.0   3.29
#> 4 GTEX4      3.40 26.7   3.99

reprex 包(v2.0.1)於 2022-07-18 創建

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM