如何对包含空白条目的表进行子集化

时间:2013-06-13 20:58:57

标签: r

我有一个包含5列和> 100k行的表

col1    col2    col3    col4    col5
foo     bar
foo1    bar1    this1  that1    other1
foo2    bar2           that2    other2

我想在此表中阅读,以便空白

  1. 以NA或
  2. 读入
  3. 忽略这些行
  4. 我尝试了a=read.table("a.txt",header=F,sep='\t',na.strings=c("NA","NULL")),但发现NA只出现在整数列中,而不是字符串。我一直试图对结果表进行子集化以删除具有空白的列,但尚未成功。

    我试过了:

    subset(a,a$V4!= ' ')
    subset(a,a$V4!= '\t')
    subset(a,a$V4!= '\w')
    subset(a,a$V4!= '\s')
    subset(a,a$V4==NULL)
    subset(a,a$V4==is.na) 
    

    一切都无济于事。

    我很感激任何建议

1 个答案:

答案 0 :(得分:0)

在@adibender所说的基础上,你可能在这些空白字段中有一些未知数量的空白字符。包含c('', ' ')可能会解决某些字段,但如果空白字符的数量不同,您仍然会有一些空白。

R在subset(a,a$V4!= '\s')中的上述比较中不使用正则表达式。您可以使用grepl进行正则表达式比较并获得逻辑答案,例如: a[!grepl('[[:space:]]', a$V4), ](返回aa$V4未找到空格字符的行。

如果要删除空格并替换为NA(假设没有空格有效),我可能会使用gsub中的str_trimstringr,然后使用ifelse(a$V4 == '', NA, a$V4)从空字符串更改为NA