r - 引用问题将数据读入 R

标签 r csv import-from-csv

我有一些数据,我正在尝试将其加载到 R .它在 .csv 文件中,我可以在 Excel 和 OpenOffice 中查看数据。 (如果你好奇的话,这是来自加拿大选举局的 2011 年民意调查结果数据here)。

数据以不寻常​​的方式编码。一个典型的线路是:

12002,Central Nova","Nova-Centre"," 1","River John",N,N,"",1,299,"Chisholm","","Matthew","Green Party","Parti Vert",N,N,11

有一个"在 Central-Nova 的尽头,但不是在开头。所以为了读入数据,我取消了引号,这对前几个文件工作正常。 IE。
test<-read.csv("pollresults_resultatsbureau11001.csv",header = TRUE,sep=",",fileEncoding="latin1",as.is=TRUE,quote="")

现在问题来了:在另一个文件(例如 pollresults_resultatsbureau12002.csv)中,有一行数据是这样的:
12002,Central Nova","Nova-Centre"," 6-1","Pictou, Subd. A",N,N,"",0,168,"Parker","","David K.","NDP-New Democratic Party","NPD-Nouveau Parti democratique",N,N,28

因为我需要取消引号,所以条目 "Pictou, Subd. A"使 R 想把它分成 2 个变量。无法读入数据,因为它想在构建数据帧的过程中添加一列。

Excel 和 OpenOffice 都可以打开这些文件没问题。不知何故,Excel 和 OpenOffice 知道引号仅当它们位于变量条目的开头时才重要。

你知道我需要在 上启用什么选项吗? R 获取这些数据?我有超过 300 个文件需要加载(每个文件都有大约 1000 行),所以手动修复不是一个选项......

我到处寻找解决方案,但找不到。

最佳答案

这个答案主要是针对@AnandaMahto(参见对原始问题的评论)。

首先,由于数据中的法语口音,它有助于全局设置一些选项:

options(encoding="latin1")

接下来,使用 readLines() 逐字读取数据:
temp <- readLines("pollresults_resultatsbureau13001.csv")
在此之后,只需用逗号+引号替换每行数据中的第一个逗号。这是有效的,因为第一个字段总是 5 个字符长。请注意,它保持标题不变。
temp[-1] <- gsub('^(.{6})(.*)$', '\\1\\"\\2', temp[-1])
最后,覆盖原始文件。
fileConn<-file("pollresults_resultatsbureau13001.csv")writeLines(temp,fileConn)close(fileConn)
最后,只需将数据读回 R:
data<-read.csv(file="pollresults_resultatsbureau13001.csv",header = TRUE,sep=",")
可能有一种更简洁的方法来做到这一点(并且可以更轻松地迭代),但这个过程对我来说很有意义。

关于r - 引用问题将数据读入 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15074872/

相关文章:

r - 绘图图例中带有白色背景的符号(pt.bg 无效)

R 多元回归循环和提取系数

python - 当一列用管道分隔时,如何读取 pandas 中的 CSV?

r - R 中的数据操作 : 'X' must be atomic

r - 如何在 RCpp 中向数据框添加新列?

r - 在 R 数据表中,max 对有序因子起作用并且在分组时失败

javascript - 如何格式化 CSV 文件以像 html 中的表格一样显示

regex - CSV(在字段值中有额外的引号)到 ColdFusion 中的数组

mysql [第 1 行被截断;它包含的数据多于输入列] 错误