如何在R data.table的melt结果中添加samples列并整合指定列?
解决方案
要生成包含chrom、pos、strand、samples、measure、value列的熔解表,你需要分两步处理样本列和统计量列(AVG、MED),再将结果合并:
- 熔解样本列:将
D-0-1等样本列转换为samples列,同时标记对应的measure为"sample" - 熔解统计量列:将
AVG、MED转换为measure列,samples列设为NA(或自定义标记如"summary") - 合并结果:将两部分数据行合并,得到最终结构
完整代码
library(data.table) # 熔解样本列,生成samples列 melted_samples <- melt(consensus_hiQ_CpGs, id.vars = c("chrom", "pos", "strand"), measure.vars = c("D-0-1", "D-0-2", "D-A-1", "D-A-2", "D-A-3"), variable.name = "samples", value.name = "value") melted_samples[, measure := "sample"] # 熔解统计量列,生成measure列 melted_stats <- melt(consensus_hiQ_CpGs, id.vars = c("chrom", "pos", "strand"), measure.vars = c("AVG", "MED"), variable.name = "measure", value.name = "value") melted_stats[, samples := NA_character_] # 合并两部分数据 final_melted <- rbind(melted_samples, melted_stats) # 可选:调整列顺序为需求的顺序 setcolorder(final_melted, c("chrom", "pos", "strand", "samples", "measure", "value"))
说明
- 样本行中,
samples列对应原数据的样本列名(如D-0-1),measure固定为"sample",value是该样本的原始数值 - 统计量行中,
measure列对应AVG或MED,samples列设为NA(你也可以改为"summary"等自定义标记),value是对应统计量的数值 setcolorder用于将列调整为你需求的顺序,可选
内容的提问来源于stack exchange,提问作者sahuno
相关产品推荐
相关产品推荐

