我正在处理来自微阵列的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中的所有探针)。
点数:
有什么建议吗?
发布于 2017-11-03 22:41:00
在@thelatemail的注释上展开,您可以使用tidyr::separate_rows为UCSC_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)https://stackoverflow.com/questions/47105058
复制相似问题