首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并具有相同内容的行

合并具有相同内容的行
EN

Stack Overflow用户
提问于 2021-01-11 21:49:46
回答 1查看 32关注 0票数 1

我正在处理一个包含遗传变异信息的tsv文件。由于此信息来自多个数据库,因此我的文件包含重复数据。在我的例子中,数据库是"dbSNP",它包含各种变体(良性和致病性的,其名称以“rs”开头)和"HGMD-PUBLIC“(在我的例子中,仅包含致病性的变体,其名称以”CM“开头)。

以下是一些示例数据:

代码语言:javascript
复制
variant_name <- c("rs1320425680", "rs1217211965", "rs1257939387", "rs74315401", "CM890102")
variant_source <- c("dbSNP", "dbSNP", "dbSNP", "dbSNP", "HGMD_PUBLIC")
chromosome <- c(20, 20, 20, 20, 20)
position_start <- c(4699513, 4699516, 4699520, 4699525, 4699525)
position_end <- c(4699513, 4699516, 4699520, 4699525, 4699525)
ancestral_allele <- c("A", "G", "C", "C", "C")
clinical_significance <- c(NA, NA, NA, "pathogenic", NA)
variant_alleles <- c("A/C", "G/A/T", "C/G", "C/T", "HGMD_MUTATION")

example <- tibble(variant_name, variant_source, chromosome, position_start, position_end, ancestral_allele, clinical_significance, variant_alleles)

在这里,第4行和第5行实际上是来自两个不同数据库的相同变体的副本。对我来说重要的是要知道这两个变量都出现了。

我想要做的是将数据扩展为“宽”格式,增加两个新列:dbSNPHGMD_PUBLIC (目前位于variant_source中)。这些列将包含最初在列variant_name中找到的条目,如下所示:

代码语言:javascript
复制
dbSNP <- c("rs1320425680", "rs1217211965", "rs1257939387", "rs74315401")
HGMD_PUBLIC <- c(NA, NA, NA, "CM890102")
chromosome <- c(20, 20, 20, 20)
position_start <- c(4699513, 4699516, 4699520, 4699525)
position_end <- c(4699513, 4699516, 4699520, 4699525)
ancestral_allele <- c("A", "G", "C", "C")
clinical_significance <- c(NA, NA, NA, "pathogenic")
variant_alleles <- c("A/C", "G/A/T", "C/G", "C/T")

result <- tibble(dbSNP, HGMD_PUBLIC, chromosome, position_start, position_end, ancestral_allele, clinical_significance, variant_alleles)

如您所见,第5行不再存在,但是variant_name已经移到了dbSNPHGMD_PUBLIC列。也许可以使用spread函数来实现上述功能,使重排以名称为条件,但我不知道如何做到这一点。

EN

回答 1

Stack Overflow用户

发布于 2021-01-11 23:15:21

下面是一个使用dcase + fcoalescedata.table选项

代码语言:javascript
复制
dcast(
  setDT(example),
  ... ~ variant_source,
  value.var = "variant_name"
)[,
  lapply(.SD, function(x) fcoalesce(as.list(x))),
  by = chromosome:ancestral_allele
]

这给了我们

代码语言:javascript
复制
   chromosome position_start position_end ancestral_allele
1:         20        4699513      4699513                A
2:         20        4699516      4699516                G
3:         20        4699520      4699520                C
4:         20        4699525      4699525                C
   clinical_significance variant_alleles HGMD_PUBLIC        dbSNP
1:                  <NA>             A/C        <NA> rs1320425680
2:                  <NA>           G/A/T        <NA> rs1217211965
3:                  <NA>             C/G        <NA> rs1257939387
4:            pathogenic   HGMD_MUTATION    CM890102   rs74315401
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65668102

复制
相关文章

相似问题

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