簡體   English   中英

從R的一列中的一部分字符串創建組

[英]Create groups from part of string in a column in R

我正在處理來自微陣列的DNA甲基化數據。 陣列中的每個“探針”都有與其相關的多個基因。每個基因中也有多個探針。 這是一個簡短的示例:

|probe      | P.Value| adj.P.Val|      Dbeta|UCSC_REFGENE_NAME          |
|:----------|-------:|---------:|----------:|:--------------------------|
|cg23516680 |   2e-07| 0.0003419| -0.0172609|LYST                       |
|cg02390624 |   2e-07| 0.0003419|  0.0170831|SYTL2;SYTL2;SYTL2          |
|cg08808720 |   2e-07| 0.0003424| -0.0129818|KIF5C;MIR1978              |
|cg12074090 |   2e-07| 0.0003300| -0.0169523|ANGPT2;ANGPT2;ANGPT2;MCPH1 |
|cg10376100 |   1e-07| 0.0002714|  0.0172562|LYST;MIR1537               |

我要做的是根據UCSC_REFGENE_NAME列中出現的任何字符名稱(基因)進行分組(例如,一組將是與基因LYST相關的所有探針,而另一組則是在MIR1537中的所有探針

要點:

  • 我知道這會導致單個探針/行發生> 1( LYSTMIR1537都應該是包含cg10376100的組)
  • 我不希望同一基因的同一探針出現> 1(例如,cg12074090對於ANGPT2只應出現一次)。

有什么建議嗎?

擴展@thelatemail的注釋,您可以使用tidyr::separate_rowsUCSC_REFGENE_NAME列中的每個單獨條目創建一行。 接下來,您可以使用dplyr::distinct刪除重復的條目。

library(dplyr)
library(tidyr)

df %>% 
  separate_rows(UCSC_REFGENE_NAME, sep = ";") %>%
  distinct()

#>        probe P.Value adj.P.Val      Dbeta UCSC_REFGENE_NAME
#> 1 cg23516680   2e-07 0.0003419 -0.0172609              LYST
#> 2 cg02390624   2e-07 0.0003419  0.0170831             SYTL2
#> 3 cg08808720   2e-07 0.0003424 -0.0129818             KIF5C
#> 4 cg08808720   2e-07 0.0003424 -0.0129818           MIR1978
#> 5 cg12074090   2e-07 0.0003300 -0.0169523            ANGPT2
#> 6 cg12074090   2e-07 0.0003300 -0.0169523             MCPH1
#> 7 cg10376100   1e-07 0.0002714  0.0172562              LYST
#> 8 cg10376100   1e-07 0.0002714  0.0172562           MIR1537

使用數據

txt = " |probe      | P.Value| adj.P.Val|      Dbeta|UCSC_REFGENE_NAME          |
  |cg23516680 |   2e-07| 0.0003419| -0.0172609|LYST                       |
  |cg02390624 |   2e-07| 0.0003419|  0.0170831|SYTL2;SYTL2;SYTL2          |
  |cg08808720 |   2e-07| 0.0003424| -0.0129818|KIF5C;MIR1978              |
  |cg12074090 |   2e-07| 0.0003300| -0.0169523|ANGPT2;ANGPT2;ANGPT2;MCPH1 |
  |cg10376100 |   1e-07| 0.0002714|  0.0172562|LYST;MIR1537               |"

df <- read.table(text = stringr::str_replace_all(txt, "\\|", " "),
           header = TRUE, stringsAsFactors = FALSE)

暫無
暫無

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

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