2014-03-26 31 views
0

我有这个文本数据框,所有列都是字符向量。铸造带有文本列的数据框的问题

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 

如何使用重塑/重塑此建立一个数据帧2,使得我得到的格式Gene.ID的数据帧〜条形码,并正在各个值列中的文本和“NA”的值或“WT”作为填充物?

默认的聚合函数保持默认的长度,如果可能,我想避免这个长度。

+0

我不完全按照你所要做的,也许是因为我不经常使用重塑/重塑。您是否试图以Gene.id,条形码,missense_mutation,silent,...等变量的形式获取数据? – iacobus

+0

我想获得一个数据帧与列中的条形码和gene.IDs在行中,“值”是每个单元格的值。如果缺少特定基因/条形码组合的值,我希望它是“WT”或“NA”。 –

+0

您的“Gene.ID”或“条形码”列中是否有重复的值? – A5C1D2H2I1M1N2O1R2T1

回答

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