使用文本列转换数据框时出现问题

时间:2014-03-26 02:55:53

标签: r reshape reshape2

我有这个文本数据框,所有列都是字符向量。

    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”填料?

默认聚合函数保持默认为长度,如果可能,我想避免这种情况。

1 个答案:

答案 0 :(得分:0)

我认为这对您的问题有用。首先,我正在生成一些类似于你的数据。为简单起见,我将gene.idbarcode作为一个因素,这应该与您的数据相同。

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)列的数据框。每列应包含该特定样品条形码中该特定基因的表达信息。