2012-07-06 51 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" 
) 
相关问题