将csv加载到R中,`sep =,`作为第一行

时间:2016-06-22 21:23:42

标签: r csv read.csv

我从(PowerBI)导出数据的程序将数据保存为.csv文件,但文件的第一行是sep=,,然后文件的第二行有标题(列名称) )。

假冒.csv文件示例:

sep=,
Initiative,Actual to Estimate (revised),Hours Logged,Revised Estimate,InitiativeType,Client
FakeInitiative1 ,35 %,320.08,911,Platform,FakeClient1
FakeInitiative2,40 %,161.50,400,Platform,FakeClient2

我使用此命令读取文件:

initData <- read.csv("initData.csv",
                   row.names=NULL,
                   header=T,
                   stringsAsFactors = F)

但是我一直收到一个错误,即错误的列数(因为它认为第一行告诉它列的数量)。

如果我执行header=F而不是加载,但是当我执行names(initData) <- initData[2,]时,名称会包含空格和非法字符,并且会破坏程序的其余部分。讨厌。

有谁知道如何告诉R忽略第一行?我可以在文本编辑器中进入.csv文件,并在每次加载之前手动删除第一行(如果我这样做,一切正常)但我必须导出一堆文件,这有点愚蠢而且乏味。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点。这是一个:

all_content = readLines("initData.csv")
skip_first_line = all_content[-1]
initData <- read.csv(textConnection(skip_first_line),
                   row.names=NULL,
                   header=T,
                   stringsAsFactors = F)

答案 1 :(得分:0)

Your file could be in a UTF-16 encoding. See hrbrmstr's answer in how to read a UTF-16 file: