read.csv中的复杂分隔符

时间:2015-10-20 10:54:23

标签: r csv

我正在尝试使用R中的一个非常大的数据集。它目前以CSV格式保存,我使用read.csv将其导入。不幸的是,其中一个fields是Address,自然包含逗号,R显然是将它们作为分隔符读取。一个正面,地址中的所有逗号后跟空格。

所以这就是问题所在。无论如何告诉read.csv","不是分隔符,而是","是什么?

如果没有,无论如何我是否可以将一个csv导入R作为一个长字符串然后进行查找和替换?或者,最后一种情况,您是否可以指向一个体面的文本编辑器,我可以在我的工作笔记本电脑上安装它?

谢谢,詹姆斯

1 个答案:

答案 0 :(得分:1)

我的第一次尝试是使用引号或|分隔符重新创建文件。

如果这不是一个选项,我会尝试使用readLinesgsub, 假设我可以将所有这些字符串读入内存。

library(dplyr)

File <- 
  paste("Name,Address,Occupation,Hair Color",
        "Mary,123 Lamb St, Ruralsville, KY,Shepherd,Blonde",
        "Jim,17 Elm St., Urban Center, TN,Butler,Brown",
        sep = "\n")


write(File, tmp)

DF <- readLines(tmp) %>%
  gsub(", ", "_;_", .) %>%
  textConnection() %>%
  read.csv() %>%
  mutate(Address = gsub("_;_", ", ", Address))

unlink(tmp)

如果文件太大而无法读入内存,我可能会尝试编写循环 一次读取100,000行,在每个段上执行上述代码,并且 将其写入新的CSV。新的CSV将从R中正确引用并应该读入 相当不错。

(我还没有尝试过编写这个循环。我希望你的缘故不会发生这种情况。)