readtable using space as unwanted delimiter
62 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I have a CSV that includes a field containing multiple numbers separated by spaces that I would like to read as a single column. My data is of the form:
name,var1,var2,var3,var4
some name,1.1,2.2,3.3,44 5.5
other name,6.6,7.7,8.8,99 0.0
I would like it to be output as:
name var1 var2 var3 var4
__________ ____ ____ ____ _________
some name 1.1 2.2 3.3 44 5.5
other name 6.6 7.7 8.8 99 0.0
The problem is using readtable() reads the spaces in the last column as delimiters. I have tried explicitly setting the delimiter:
data = readtable(file, 'Delimiter', ',');
To no avail. It seems to work on strings, just not on numbers. I would prefer to not explicitly define the format as column order may change. If it can't be done easily I can always resort to a custom reader using textscan()...
0 comentarios
Respuestas (2)
Guillaume
el 1 de Jul. de 2016
Possibly, this would work (or a variation upon it):
data = readtable(file, 'Delimiter', ',', 'Format', '%s,%f,%f,%f,%s')
That is override the format of the row to force interpretation of the last two numbers as a string.
0 comentarios
Star Strider
el 30 de Jun. de 2016
I don’t use readtable much, but looking through the documentation, there are options you may want to consider. One is 'TreatAsEmpty' and another is 'FileType'. I don’t have your file to experiment with, so I can’t suggest anything more specific.
2 comentarios
Star Strider
el 1 de Jul. de 2016
You should be able to do it with textscan. It’s flexible enough to be able to read your file, although you might have to write a separate fscanf (or textscan) call to read the first line.
Ver también
Categorías
Más información sobre Large Files and Big Data en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!