删除逗号分隔文件中

时间:2016-08-07 05:55:47

标签: r

我在逗号分隔文件中有行/观察,理想情况下应该有55列。但是有一些字段,例如地址中有一个额外的逗号。例如曼哈顿,纽约应该是一个字段曼哈顿,纽约但我得到两个字段曼哈顿纽约当我读取增加列数的文件时。

我是否可以使用R或任何工具(如Delimit或Excel)删除此类观察结果?

我最终想把这个文件加载到R中进行分析。

我同意我的问题类似于Delete lines or rows in a tab-delimited file, by number of cells in that lines or rows,但我正在寻找R的解决方案。

输入

Name, Address, DOB
John, Manhattan, New York, 2/8/1990
Jacob, Arizona, 9/10/2012
Smith, New Jersey, 8/10/2016

预期输出

Name, Address, DOB
Jacob, Arizona, 9/10/2012
Smith, New Jersey, 8/10/2016

3 个答案:

答案 0 :(得分:5)

一般来说,我不主张做你想做的事,就是扔掉记录。尽管如此,如果这是你想要做的,你可以这样做。

假设您的数据作为文本存储在名为overflow: hidden;的文件中,您可以使用foo函数计算由count.fields的存在定义的字段。然后从sep函数中省略它们。

readLines

答案 1 :(得分:2)

一种选择是使用readLines阅读,然后使用sub围绕单词创建引号,然后使用read.table

读取数据集
lines1 <- gsub(",", " ", lines)
lines1[-1] <- sub("^(\\S+)\\s+([^0-9]+\\b)\\s+(\\d+.*)", "\\1 '\\2' \\3", 
                              lines1[-1])

read.table(text=lines1,  stringsAsFactors=FALSE, header = TRUE)
#   Name             Address       DOB
#1  John Manhattan  New York  2/8/1990
#2 Jacob             Arizona 9/10/2012
#3 Smith          New Jersey 8/10/2016

数据

lines <- readLines("yourfile.txt")

答案 2 :(得分:2)

我们可以计算每一行中逗号的数量,并将行向量的子集仅用于那些具有预期逗号数的行:

double* array = new double(Nx*Ny); // creates a single, initialized double
double* array = new double[Nx*Ny]; // creates an array of doubles