Exclude rows from table if multiple conditions are met
    5 views (last 30 days)
  
       Show older comments
    
Hi,
I have a table with many columns and rows (long list of patients that have had many questionnaires). I want to exclude patients that haven't filled in any of 5 questionnaires, but want to keep them if they have filled in all or for example only 1 of them. I tried it with an if loop, but I get the error 'Conversion to logical form from table is not possible.'
For example for the following table
                A        B        C        D        E
1            NaN    NaN    NaN     4        NaN
2            NaN    NaN    NaN    NaN    NaN
3            8         6           9         3        5
4            4         8         NaN      5        4
5            NaN    NaN    NaN    NaN    NaN
6            NaN    3            2      NaN    NaN
I want to exclude rows 2 and 5 since all questionnaires are not filled in but keep the rest, including the rows with only a few filled-in questionnaires.
I tried it with an if loop (if all 5 questionnaires are not NaN, then keep the rows, otherwise delete them), but then got the error as written above.
Anyone know how to do this? Thanks!
1 Comment
  Matt J
      
      
 on 21 Jul 2022
				I have a table with many columns 
Is it really a Matlab table data type, as in,
Accepted Answer
  Kevin Holly
    
 on 21 Jul 2022
        m = [1            NaN    NaN    NaN     4        NaN
    2            NaN    NaN    NaN    NaN    NaN
    3            8         6           9         3        5
    4            4         8         NaN      5        4
    5            NaN    NaN    NaN    NaN    NaN
    6            NaN    3            2      NaN    NaN]
rmmissing(m,'MinNumMissing',5)
4 Comments
  Kevin Holly
    
 on 21 Jul 2022
				Yes, please see below
t = [NaN    NaN    NaN     4        NaN
    NaN    NaN    NaN    NaN    NaN
    8         6           9         3        5
    4         8         NaN      5        4
    NaN    NaN    NaN    NaN    NaN
    NaN    3            2      NaN    NaN];
t=array2table(t)
t.Properties.VariableNames = {'A' 'B' 'C' 'D' 'E'};
new_t = rmmissing(t,'MinNumMissing',3,'DataVariables',["A" "B" "C"])
More Answers (1)
See Also
Categories
				Find more on Logical in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

