Exclude rows from table if multiple conditions are met

조회 수: 5 (최근 30일)
YaaW
YaaW 2022년 7월 21일
댓글: YaaW 2022년 7월 22일
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!

채택된 답변

Kevin Holly
Kevin Holly 2022년 7월 21일
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]
m = 6×6
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)
ans = 4×6
1 NaN NaN NaN 4 NaN 3 8 6 9 3 5 4 4 8 NaN 5 4 6 NaN 3 2 NaN NaN
  댓글 수: 4
Kevin Holly
Kevin Holly 2022년 7월 21일
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 = 6×5 table
t1 t2 t3 t4 t5 ___ ___ ___ ___ ___ 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.Properties.VariableNames = {'A' 'B' 'C' 'D' 'E'};
new_t = rmmissing(t,'MinNumMissing',3,'DataVariables',["A" "B" "C"])
new_t = 3×5 table
A B C D E ___ _ ___ ___ ___ 8 6 9 3 5 4 8 NaN 5 4 NaN 3 2 NaN NaN
YaaW
YaaW 2022년 7월 22일
Thank you very much!! It worked!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Matt J
Matt J 2022년 7월 21일
A=randi(5,5); A(A<=4)=nan
A = 5×5
NaN NaN NaN NaN NaN 5 NaN NaN NaN 5 NaN NaN NaN NaN NaN NaN 5 NaN NaN 5 NaN NaN NaN 5 NaN
A(all(isnan(A),2),:)=[]
A = 3×5
5 NaN NaN NaN 5 NaN 5 NaN NaN 5 NaN NaN NaN 5 NaN

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by