2014-03-26 33 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)列的數據幀。每一列應包含特定樣本條形碼中特定基因的表達信息。