R导入标头上缺少逗号的csv

Joh*_*ohn 1 csv r

在R中,我导入的csv文件在标题行的末尾缺少逗号.我每天都下载新文件,所以我想弄清楚如何解决R中的问题,而不是每次都编辑文件.这是一个例子.

head1,head2,head3"dat1","dat2","123","dat1b","dat2b","456"
Run Code Online (Sandbox Code Playgroud)

这些文件似乎在所有数据周围都有引号,而不仅仅是字符串.我使用的导入方法是:

mydata <-read.csv('mycsv.csv', stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)

可能我可以找到第一个引用并在它之前插入一个逗号.

提前致谢

jba*_*ums 7

这可能不是最优雅的解决方案,但它可能就足够了.

首先,阅读整行,而不是试图直接解释为csv.我textConnection在第一个代码块中使用的位置,您可以提供文件路径或URL,例如readLines('/path/to/my/strange.csv').

tmp <- readLines(textConnection('head1,head2,head3"dat1","dat2","123"
"dat3","dat4","456"
"dat5","dat6","789"
"dat7","dat8","012"
"dat9","dat10","345"
"dat11","dat12","678"'))
Run Code Online (Sandbox Code Playgroud)

然后对第一行进行一些操作:

h <- sub('\".*', '', tmp[1]) # extracts the headers from the first line
row1 <- sub('[^\"]*(.*)', '\\1', tmp[1]) # extracts the first row's data
tmp <- c(row1, tmp[-1]) # combines the first row's data with subsequent rows' data
Run Code Online (Sandbox Code Playgroud)

现在解释为csv:

dat <- read.csv(textConnection(tmp), header=FALSE) # read tmp in as a csv
names(dat) <- strsplit(h, ',')[[1]] # add headers

dat

  head1 head2 head3
1  dat1  dat2   123
2  dat3  dat4   456
3  dat5  dat6   789
4  dat7  dat8    12
5  dat9 dat10   345
6 dat11 dat12   678
Run Code Online (Sandbox Code Playgroud)