我在逗号分隔文件中有行/观察,理想情况下应该有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
答案 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