How to Delete Non-Numeric Columns from Table
    14 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Kevin
 el 29 de Jul. de 2014
  
    
    
    
    
    Comentada: Kevin
 el 30 de Jul. de 2014
            I'm using readtable to load data from a text file. Some columns have text in them; others don't. I want to effectively delete the columns that have at least one entry of non-numeric data, so that I can convert the remaining table to an array (using table2array).
How can I do this?
1 comentario
  Andrew Reibold
      
 el 29 de Jul. de 2014
				
      Editada: Andrew Reibold
      
 el 29 de Jul. de 2014
  
			Can you please provide an example of the readtable output? :-)
Respuesta aceptada
  Arun Mathew Iype
    
 el 29 de Jul. de 2014
        I think it is better to use the “Import Data” tool which allows you to import data as an array directly using a GUI and also to generate scripts for doing the same everytime.
However to answer your question the following steps and example should be helpful.
- Create a TEXT file called “sampledata.txt” and copy the following data into it.
LastName,Gender,Age,Height,Weight,Smoker Smith,M,38,71,176,1 Johnson,M,43,69,163,0 Williams,F,38,64,131,0 Jones,F,S,67,133,0 Brown,F,49,64,119,0
- Run the below script to delete the columns which have text in them and generate the required array. Note that if even one item in a column is a string then the whole column is of cell array
% read the data into  a variable
T = readtable('sampledata.txt')
V = T.Properties.VariableNames;
for i = [1:width(T)]
    v_is_cell(i) = iscell(T.(V{i}));
end
%use logical indexing to delete the required columns
T(:,v_is_cell) = [];
table2array(T)
T =
     LastName     Gender    Age     Height    Weight    Smoker
    __________    ______    ____    ______    ______    ______
    'Smith'       'M'       '38'    71        176       1     
    'Johnson'     'M'       '43'    69        163       0     
    'Williams'    'F'       '38'    64        131       0     
    'Jones'       'F'       'S'     67        133       0     
    'Brown'       'F'       '49'    64        119       0
ans =
    71   176     1
    69   163     0
    64   131     0
    67   133     0
    64   119     0
Más respuestas (0)
Ver también
Categorías
				Más información sobre Tables 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!


