导入某些.csv列并忽略其他列

时间:2018-02-05 15:12:38

标签: r csv import

在此帮忙表示赞赏。

我有一个专有的.CSV文件(太大而无法编辑),其中的列数多于其中的数据,例如:

col1  col2  col3 .... col98  col99
id1    1     tim       ""      ""    ""    ""
......

请注意每个字段的双引号,并且数据多于标题。

我想只阅读那些我知道确实有数据的列(例如col1,col2,col3),并忽略那些具有双引号(")或没有数据或没有相应标题的列(col 98-99,以及2个额外的未命名列。)

我尝试使用read.csv读取它,但不幸的是,它会为没有数据的列(即带有引用的引号)引发错误:

td= read.csv(file.choose(), header = T, as.is = T, sep='"')

提前致谢,

1 个答案:

答案 0 :(得分:2)

请注意,csv代表逗号分隔值,而不是这里的情况;但是,我们仍然可以像这样使用read.csv

Lines <- 'col1  col2  col3 col98  col99
id1    1     tim       ""      ""'

DF <- read.csv(text = Lines, as.is = TRUE, sep = "", quote = '"')

,并提供:

  col1 col2 col3 col98 col99
1  id1    1  tim    NA    NA

如果您只想要列号已知的某些列,那么:

> DF[1:3]
  col1 col2 col3
1  id1    1  tim

或检测并删除NAs列:

DF[!apply(is.na(DF), 2, all)]

,并提供:

  col1 col2 col3
1  id1    1  tim