How to Delete Non-Numeric Columns from Table
22 次查看(过去 30 天)
显示 更早的评论
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 个评论
Andrew Reibold
2014-7-29
编辑:Andrew Reibold
2014-7-29
Can you please provide an example of the readtable output? :-)
采纳的回答
Arun Mathew Iype
2014-7-29
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
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Cell Arrays 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!