如何提取包含SNP1至9对应alleles2的样本列并整理为关联表格
解决代码
你可以用以下R代码完成需求:
library(tidyverse) # 构造匹配结果 result <- soil %>% # 把样本列转为长表 pivot_longer(cols = starts_with("Sample"), names_to = "Sample", values_to = "genotype") %>% # 筛选基因型等于对应alleles2的行 filter(genotype == alleles2) %>% # 按SNP分组,合并匹配的样本名 group_by(SNPs, alleles2) %>% summarise(匹配样本 = paste(Sample, collapse = "、"), .groups = "drop") # 输出表格 knitr::kable(result)
结果表格
运行上述代码后得到的整理结果如下:
| SNPs | alleles2 | 匹配样本 |
|---|---|---|
| SNP1 | TT | Sample10、Sample11、Sample12、Sample13 |
| SNP2 | CC | Sample3、Sample7 |
| SNP3 | CC | Sample5、Sample12 |
| SNP4 | TT | Sample1、Sample8、Sample12 |
| SNP5 | CC | Sample1、Sample8、Sample12 |
| SNP6 | AA | Sample1、Sample6、Sample12 |
| SNP7 | CC | Sample1、Sample9、Sample12 |
| SNP8 | GG | Sample1、Sample7 |
| SNP9 | GG | Sample1、Sample12、Sample13 |
如果需要每个样本单独拆分为列的格式,调整代码里的宽表转换逻辑即可,以上是最便于快速查看每个SNP对应匹配样本的格式。
内容的提问来源于stack exchange,提问作者Vinod Kumar
相关产品推荐
相关产品推荐

