- A *.mat file with the actual table
- Code that reproduces the table, or at least a subset of it that recreates the problem
Can't get all the rows in my table that have any missing values and remove those rows
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Dhruv Ghulati
am 18 Dez. 2015
Bearbeitet: Dhruv Ghulati
am 18 Dez. 2015
Hi there,
I am trying to remove my table (of a combination of double, cell arrays and duration arrays) of any rows which have missing values. For example, a subset of the table is:
'' '' '441' '0'
'' '' '5' '0'
'No' '' '2889' '0'
'No' 'Clicks' '2894' '0'
'' '' '' '0'
'' '' '5' '0'
'No' 'ROD' '3591' '1'
'' '' '' '0'
My code is:
badRows = ismissing(finalnbs);
T = finalnbs(~badRows, :);
However, this results in an error:
Row index exceeds table dimensions.
What am I doing wrong, and what code do I need to achieve my need?
4 Kommentare
Guillaume
am 18 Dez. 2015
Also, don't put questions in the title, particularly if it is a different question than in the body.
Both the cyclist and I answer your question in the body (remove any row which has missing value). The answer to remove any row that has more than x missing values is completely different
Akzeptierte Antwort
the cyclist
am 18 Dez. 2015
This should solve it for you:
A = {
'' '' '441' '0';
'' '' '5' '0';
'No' '' '2889' '0';
'No' 'Clicks' '2894' '0';
'' '' '' '0';
'' '' '5' '0';
'No' 'ROD' '3591' '1';
'' '' '' '0'};
T = cell2table(A)
badEntry = ismissing(T);
badRow = any(badEntry,2)
T = T(~badRow, :);
0 Kommentare
Weitere Antworten (1)
Guillaume
am 18 Dez. 2015
Bearbeitet: Guillaume
am 18 Dez. 2015
badRows is an m*n logical array, where m is the number of rows and n the number of columns of your table. So it has m*n elements. You're then using that as a row index into your table, so of course, matlab can't fit m*n values into m values.
T = finalnbs(~any(badrows, 2), :);
%or
T = finalnbs(all(~badrows, 2), :);
P.S.: this answer your question on how to remove any row which has missing value. If you want to remove rows have more than x missing values, then you use sum instead:
T = finalnbs(sum(badrows, 2) <= x, :);
0 Kommentare
Siehe auch
Kategorien
Mehr zu Structures finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!