- 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
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Dhruv Ghulati
le 18 Déc 2015
Modifié(e) : Dhruv Ghulati
le 18 Déc 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 commentaires
Guillaume
le 18 Déc 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
Réponse acceptée
the cyclist
le 18 Déc 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 commentaires
Plus de réponses (1)
Guillaume
le 18 Déc 2015
Modifié(e) : Guillaume
le 18 Déc 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 commentaires
Voir également
Catégories
En savoir plus sur Structures dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!