← 返回教程列表

🧬 chr:pos 对齐与合并

解决GWAS数据只有chr:pos没有rsid的对齐问题

📋 概述

本教程介绍如何使用 chr:pos 进行暴露与结局数据的对齐与合并。适用于以下情况:

  • 结局数据中只有chr:pos而没有rsid
  • 暴露和结局中均没有rsID
  • 需要先对暴露进行P值筛选,然后进行连锁不平衡分析

🎯 适用情况

情况一:结局数据只有chr:pos

当结局数据中只有chr:pos而没有rsid时,需要先用暴露的rsid转换为chr:pos,然后用chr:pos进行对齐

情况二:暴露和结局均无rsID

暴露和结局中均没有rsID时,需要先将暴露的rsid转换为chr:pos,再进行对齐

💻 代码实现

1 安装并加载data.table包

# 安装data.table包
install.packages("data.table")

# 加载包
library(data.table)

2 读取暴露数据

# 读取暴露数据1和暴露数据2
# 注意:两个数据都要有chr:pos列
# 如果没有,请先使用"rsid转chr-pos"教程进行转换

data1 <- fread("data1.csv")
data2 <- fread("data2.csv")

# 查看数据结构
head(data1)
head(data2)

3 使用merge函数合并数据

# 使用merge函数合并数据
# 根据chr1和pos1(暴露数据)与chr2和pos2(结局数据)进行对齐
# 注意:需要对应好每个数据的列名

merged_data <- merge(
  data1, 
  data2, 
  by.x = c("chr1", "pos1"), # 暴露数据的列名
  by.y = c("chr2", "pos2")  # 结局数据的列名
)

# merged_data现在包含对齐的数据行

4 保存结果

# 查看合并后的数据
head(merged_data)

# 保存合并后的数据到文件
write.table(
  merged_data, 
  "merged_data.csv", 
  sep = ",", 
  quote = FALSE, 
  row.names = FALSE
)

cat("合并完成!共", nrow(merged_data), "行数据\n")

📦 完整代码

library(data.table)

# 读取数据
data1 <- fread("data1.csv") # 暴露数据
data2 <- fread("data2.csv") # 结局数据

# 合并数据(按chr:pos对齐)
merged_data <- merge(
  data1, 
  data2, 
  by.x = c("chr1", "pos1"),
  by.y = c("chr2", "pos2")
)

# 查看结果
head(merged_data)

# 保存结果
write.table(
  merged_data, 
  "merged_data.csv", 
  sep = ",", 
  quote = FALSE, 
  row.names = FALSE
)

⚠️ 注意事项

📚 相关教程