首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从R中列中的字符串部分创建组

从R中列中的字符串部分创建组
EN

Stack Overflow用户
提问于 2017-11-03 22:07:32
回答 1查看 60关注 0票数 0

我正在处理来自微阵列的DNA甲基化数据。阵列中的每个“探针”都有多个与之相关的基因,每个基因中也有多个探针。下面是一个简短的例子:

代码语言:javascript
复制
|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 (LYST和MIR1537都应该是包含cg10376100的组)
  • 我不希望同一个探针出现在同一基因上>1 (例如,cg12074090只发生一次ANGPT2)。

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-03 22:41:00

在@thelatemail的注释上展开,您可以使用tidyr::separate_rowsUCSC_REFGENE_NAME列中的每个条目创建一行。接下来,您可以使用dplyr::distinct删除重复条目。

代码语言:javascript
复制
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

数据使用

代码语言:javascript
复制
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)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47105058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档