我有这个文本数据框,所有列都是字符向量。
Gene.ID barcodes value
A2M TCGA-BA-5149-01A-01D-1512-08 Missense_Mutation
ABCC10 TCGA-BA-5559-01A-01D-1512-08 Missense_Mutation
ABCC11 TCGA-BA-5557-01A-01D-1512-08 Silent
ABCC8 TCGA-BA-5555-01A-01D-1512-08 Missense_Mutation
ABHD5 TCGA-BA-5149-01A-01D-1512-08 Missense_Mutation
ACCN1 TCGA-BA-5149-01A-01D-1512-08 Missense_Mutation
如何使用reshape / reshape 2从此构建数据帧,以便获得格式为Gene.ID~条形码的数据帧,并且值为每个值列中的文本和“NA”或“WT”填料?
默认聚合函数保持默认为长度,如果可能,我想避免这种情况。
答案 0 :(得分:0)
我认为这对您的问题有用。首先,我正在生成一些类似于你的数据。为简单起见,我将gene.id
和barcode
作为一个因素,这应该与您的数据相同。
geneNames <- c(paste("gene", 1:10, sep = ""))
data <- data.frame(gene = as.factor(c(1:10, 1:4, 6:10)),
express = sample(c("Silent", "Missense_Mutation"), 19, TRUE),
barcode = as.factor(c(rep(1, 10), rep(2, 9))))
我制作了一个载体geneNames
的基因名称载体(例如,A2M)。为了在缺少给定基因的表达式的那些中获得NA
值,您需要合并数据,使得number_of_genes由number_of_barcodes行组成。
geneID <- unique(data$gene)
data2 <- data.frame(barcode = rep(unique(data$barcode), each = length(geneID)),
gene = geneID)
data3 <- merge(data, data2, by = c("barcode", "gene"), all.y = TRUE)
现在融化并投放数据,
library(reshape)
mdata3 <- melt(data3, id.vars = c("barcode", "gene"))
cdata <- cast(mdata3, barcode ~ variable + gene, identity)
names(cdata) <- c("barcode", geneNames)
然后,您应该拥有一个包含number_of_barcodes行和(number_of_unique_genes + 1)列的数据框。每列应包含该特定样品条形码中该特定基因的表达信息。