You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R实现CSV文件中SNP样本数据的行转列?

使用R实现SNP样本数据的格式转换

原始数据结构

假设你的CSV数据如下:

SNP_NameSample_IDAlle1-ForwardAllele2-Backward
rs12345JJ37TT
rs12345JJ47CC
rs67890JJ12AA
rs67890JJ37AG

目标格式

需要转换为以Sample_ID为行、SNP名称为列的宽格式,缺失值用N/A填充:

Sample_IDrs12345rs67890
JJ37T,TA,G
JJ47C,CN/A
JJ12N/AA,A

具体实现步骤

1. 准备依赖包

先确保安装了tidyverse包(包含数据处理所需的dplyr和tidyr工具),未安装则执行:

install.packages("tidyverse")

加载包:

library(tidyverse)

2. 加载数据

你可以选择读取本地CSV文件,或者直接构造测试数据:

方式一:读取本地CSV文件

# 替换为你的实际文件路径
snp_df <- read.csv("snp_data.csv", stringsAsFactors = FALSE)

方式二:构造测试数据(快速验证用)

snp_df <- data.frame(
  SNP_Name = c("rs12345", "rs12345", "rs67890", "rs67890"),
  Sample_ID = c("JJ37", "JJ47", "JJ12", "JJ37"),
  `Alle1-Forward` = c("T", "C", "A", "A"),
  `Allele2-Backward` = c("T", "C", "A", "G"),
  stringsAsFactors = FALSE
)

3. 合并等位基因列

将两列等位基因用逗号拼接成基因型字符串:

snp_df <- snp_df %>%
  mutate(Genotype = paste(`Alle1-Forward`, `Allele2-Backward`, sep = ","))

注:列名含连字符,必须用反引号`包裹才能正确引用

4. 转换为宽格式

使用pivot_wider函数重塑数据,自动填充缺失值为N/A:

result_df <- snp_df %>%
  select(Sample_ID, SNP_Name, Genotype) %>%
  pivot_wider(
    names_from = SNP_Name, 
    values_from = Genotype, 
    values_fill = list(Genotype = "N/A")
  )

5. 查看结果

打印转换后的数据集:

print(result_df)

运行以上代码后,即可得到符合要求的目标格式数据。

内容的提问来源于stack exchange,提问作者sai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 10:42:41