2012-07-06 24 views
1

我有一個非常大的報告文件,並且我想檢查一個名爲Sample_id的特定列以獲取唯一值。我的數據如下所示:檢查一個非常大的選項卡分隔的文件的唯一值

[1] "[Header]"                    
[2] "GSGT Version\t1.9.4"                  
[3] "Processing Date\t7/6/2012 11:41 AM"              
[4] "Content\t\tGS0005701-OPA.opa\tGS0005702-OPA.opa\tGS0005703-OPA.opa\tGS0005704-OPA.opa"  
[5] "Num SNPs\t5858"                   
[6] "Total SNPs\t5858"                   
[7] "Num Samples\t132"                   
[8] "Total Samples\t132"                  
[9] "[Data]"                     
[10] "SNP Name\tSample ID\tGC Score\tAllele1 - AB\tAllele2 - AB\tChr\tPosition\tGT Score\tX Raw\tY Raw" 
[11] "rs1867749\t106N\t0.8333\tB\tB\t2\t120109057\t0.8333\t301\t378"         
[12] "rs1397354\t106N\t0.6461\tA\tB\t2\t215118936\t0.6461\t341\t192"         
[13] "rs2840531\t106N\t0.5922\tB\tB\t1\t2155821\t0.6091\t296\t391"          
[14] "rs649593\t106N\t0.8709\tA\tB\t1\t37635225\t0.8709\t357\t200"          
[15] "rs1517342\t106N\t0.4839\tA\tB\t2\t169218217\t0.4839\t316\t210"         
[16] "rs1517343\t106N\t0.5980\tA\tB\t2\t169218519\t0.5980\t312\t165"         
[17] "rs1868071\t106N\t0.5518\tA\tB\t2\t30219358\t0.5518\t355\t229"          
[18] "rs761162\t106N\t0.6923\tA\tB\t1\t13733834\t0.6923\t315\t257"          
[19] "rs911903\t106N\t0.6053\tA\tA\t1\t46982589\t0.6096\t383\t158"          
[20] "rs753646\t106N\t0.6676\tA\tB\t1\t208765509\t0.6688\t341\t169" 

所以我的問題是如何檢查列Sample_ID與R.獨特的價值,我已經知道它與unique的東西,但如何與製表符分隔的文件,採取正確的列?

+0

你可以在下一次發佈dput()的字符向量的輸出嗎?我最終得到了一份忠實的副本,但這有點麻煩。 – 2012-07-06 12:38:21

回答

3

第一讀取文件:

sample_data <- read.table(file = "filename", sep = "\t", skip = 9, header = TRUE) 

然後做(列名中的空格被自動轉換爲點)

unique(sample_data[, "Sample.ID"]) 
+1

正確,除了字段名稱。應該是列號或「Sample.ID」。默認情況下,R使用read.table和派生函數在輸入期間更改名稱不正確的列的名稱。有關詳細信息,請參閱make.names。 – 2012-07-06 12:02:54

+0

感謝您的好答覆! – Sanshine 2012-07-06 12:06:22

+2

我只是測試它,並找到另一個需要更正。還需要添加標題= TRUE – 2012-07-06 12:14:45

1

如果數據是在R對象,說這是一個名爲「線「,那麼您需要將cafe876提供的顯示解決方案應用於textConnection調用,或者使用在最近版本中添加到R中的text =參數:

samp_dat <- read.table(file = textConnection(Lines), sep = "\t", skip = 9, header=TRUE) 

OR:

samp_dat < - 函數read.table(文本=行,九月= 「\ t」 的,則跳過= 9,標題= TRUE)

這裏的一個測試例:

Lines <- 
c("[Header]                    ", 
"GSGT Version\t1.9.4                  ", 
"Processing Date\t7/6/2012 11:41 AM              ", 
"Content\t\tGS0005701-OPA.opa\tGS0005702-OPA.opa\tGS0005703-OPA.opa\tGS0005704-OPA.opa  ", 
"Num SNPs\t5858                   ", 
"Total SNPs\t5858                  ", 
"Num Samples\t132                  ", 
"Total Samples\t132                  ", 
"[Data]                     ", 
"SNP Name\tSample ID\tGC Score\tAllele1 - AB\tAllele2 - AB\tChr\tPosition\tGT Score\tX Raw\tY Raw", 
"rs1867749\t106N\t0.8333\tB\tB\t2\t120109057\t0.8333\t301\t378         ", 
"rs1397354\t106N\t0.6461\tA\tB\t2\t215118936\t0.6461\t341\t192         ", 
"rs2840531\t106N\t0.5922\tB\tB\t1\t2155821\t0.6091\t296\t391          ", 
"rs649593\t106N\t0.8709\tA\tB\t1\t37635225\t0.8709\t357\t200" 
) 
相關問題