📋 概述
本教程介绍如何使用 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
)
⚠️ 注意事项
- • 确保两个数据集的染色体编号格式一致(如都是"1"或"chr1")
- • 确保位置信息的格式一致(如都是数字)
- • 合并前建议检查数据列名,确保对应正确
- • 如果需要rsid转换,请参考"chr转rsid"教程