首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >过滤掉包含丢失数据的行,read.table失败-R

过滤掉包含丢失数据的行,read.table失败-R
EN

Stack Overflow用户
提问于 2013-07-07 17:21:56
回答 2查看 2.6K关注 0票数 1

我一直在使用R从NCBI检索关于遗传多态性列表的数据(下面最左边一列中的rs数字),正如您所看到的,返回的表包含缺少数据的行(基本上没有任何制表符间隔)。在每一列中都有数据的行(例如rs1968866)是那些发现了基因符号的行,我想保留这些行并过滤掉那些缺少数据的行。

我熟悉的用于读取表的命令是read.table(file, header = TRUE),它在本例中不起作用,因为有一些行被R读取为与标题不匹配(如rs11710684)。

有没有人有办法只读入与列标题相匹配的行的格式(每列中的数据)?这将是方便的,因为它将同时允许我丢弃我不需要的数据。

以下是我从NCBI检索到的表的示例:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-07 17:51:25

在我看来,read.table不能排除不完整的案例。但看看?read.table吧。在那里可以找到fill参数,该参数会将NA添加到未完成的行中。

代码语言:javascript
复制
r <- read.table(file, header=TRUE, fill=TRUE)

之后,您可以简单地删除不完整的行:

代码语言:javascript
复制
r <- r[complete.cases(r)]
票数 2
EN

Stack Overflow用户

发布于 2013-07-07 18:13:00

如果您的数据是制表符分隔的,则可以使用read.delim。这应该会自动为您处理缺少的值。

如果数据是以空格分隔的,则可以使用read.delim(*, sep=" ")read.table(*, header=TRUE, sep=" ")。其中任何一个都将使用空格作为分隔符来读取数据,其中多个连续的空格表示缺少值。查看您提供的摘录,您必须决定Homo sapiens是一个字段还是两个字段--后者很好,但是如果您的数据真的是用空格分隔的,那么前者就会有问题。

不过,在导入的数据上使用read.delim(sep=" ")没有任何问题,所以我猜测Homo sapiens应该是两个字段。

无论如何,一定要阅读您的文档。这是确定它所包含内容的唯一方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17510791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档