2016-04-01 43 views
0

我已经给了一堆.csv文件来读入R.不幸的是它们的格式非常差。该格式是这样的,从最上面一行向下:用不规则行格式读取.csv

  1. 空行
  2. 数据的标题数据
  3. 空行
  4. 另一个数据称号
  5. 5行
  6. 5多行数据
  7. 然后模式重复

这里是有可能被粘贴到一个文本文件,并保存为说明这一问题的.csv:

"Parameter 
",Value,Category 
, , 
Class1, , 
Blue,50,Bright 
Green,0.10,Bright 
Purple,0.050,Bright 
Yellow,0.50,Bright 
White,0.20,Bright 
, , 
Class2, , 
Blue,50,Dull 
Green,0.10,Dull 
Purple,0.050,Dull 
Yellow,2.0,Dull 
White,0.20,Dull 

我的问题是,我可以用R删除空行和数据的标题行,以便.csv正确读入,而没有那些令人讨厌的奇怪行搞乱了导入?

我不认为我可以直接添加一个.csv的问题,但我很抱歉在这里添加一个额外的步骤。

回答

2

这是否解决了您的问题?

na.omit(read.table(your_csv, skip=3, sep=",")) 

read.csv

na.omit(read.csv(your_csv, skip=3, header=FALSE)) 

我们跳过前三行,因为他们中的一些不具有3列。第四行read.*实际读取的第一行与所有其他行一样有三列。然后我们删除包含至少一个NA的行,因为您的csv中的空白单元格变成了NA s。

注意的是,如果第一线本来是(可能更恰当)格式那样:

Parameter,Value,Category 
, , 
Class1, , 
Blue,50,Bright 

然后na.omit(read.csv(your_csv))会做这项工作保留了头。

+0

它确实,但我不知道为什么。 – boshek

+0

我详细介绍了'为什么',并缩短了'如何'。有什么不清楚的吗? –