我一直在使用R从NCBI检索关于遗传多态性列表的数据(下面最左边一列中的rs数字),正如您所看到的,返回的表包含缺少数据的行(基本上没有任何制表符间隔)。在每一列中都有数据的行(例如rs1968866)是那些发现了基因符号的行,我想保留这些行并过滤掉那些缺少数据的行。
我熟悉的用于读取表的命令是read.table(file, header = TRUE),它在本例中不起作用,因为有一些行被R读取为与标题不匹配(如rs11710684)。
有没有人有办法只读入与列标题相匹配的行的格式(每列中的数据)?这将是方便的,因为它将同时允许我丢弃我不需要的数据。
以下是我从NCBI检索到的表的示例:
marker genesymbol locusID chr chrpos fxn_class species dupl_loc current.rsid flag
rs11710684 3 166516497 Homo sapiens rs11710684 1
rs1968866 PTRF 284119 17 40566240 intron-variant Homo sapiens rs1968866 1
rs2309920 2 101329860 Homo sapiens rs2309920 1
rs2384319 KIF3C 3797 2 26206255 upstream-variant-2KB Homo sapiens rs2384319 1
rs3128894 6 29839360 Homo sapiens rs3128894 1
rs2277329 SPRYD3 84926 12 53468419 intron-variant Homo sapiens rs2277329 1
rs7785249 DGKB 1607 7 14327966 intron-variant Homo sapiens rs7785249 1发布于 2013-07-07 17:51:25
在我看来,read.table不能排除不完整的案例。但看看?read.table吧。在那里可以找到fill参数,该参数会将NA添加到未完成的行中。
r <- read.table(file, header=TRUE, fill=TRUE)之后,您可以简单地删除不完整的行:
r <- r[complete.cases(r)]发布于 2013-07-07 18:13:00
如果您的数据是制表符分隔的,则可以使用read.delim。这应该会自动为您处理缺少的值。
如果数据是以空格分隔的,则可以使用read.delim(*, sep=" ")或read.table(*, header=TRUE, sep=" ")。其中任何一个都将使用空格作为分隔符来读取数据,其中多个连续的空格表示缺少值。查看您提供的摘录,您必须决定Homo sapiens是一个字段还是两个字段--后者很好,但是如果您的数据真的是用空格分隔的,那么前者就会有问题。
不过,在导入的数据上使用read.delim(sep=" ")没有任何问题,所以我猜测Homo sapiens应该是两个字段。
无论如何,一定要阅读您的文档。这是确定它所包含内容的唯一方法。
https://stackoverflow.com/questions/17510791
复制相似问题