2016-09-27 2 views
0

나는 matlab에 356x81의 테이블을 가지고 있습니다. 18 개의 변수 중 3 개 변수의 내용이 NaN 인 경우 행을 제거하고 싶습니다. 즉,이 세 변수 중 하나라도 NaN이 있으면 해당 행을 삭제하고 싶습니다. 찾았습니다. a good example on another group입니다.Matab에서 Nan의 행 제거

내 데이터가 테이블 형식이기 때문에 isnan과 관련된 문제가 발생합니다. ismissing을 사용하고 있지만 3 가지 특정 변수를 선택하는 방법을 모르겠습니다. 현재 사용하는 경우 :

B = mydata(~any(ismissing(mydata),2),:); 

NaN이있는 행은 제거됩니다.

또한 2이 무엇인지 알 수 없습니다. 나는 그것을 예제에 사용했기 때문에 그것을 사용했지만, 나는 그것이 무엇인지 전혀 모른다.

도움을 주셔서 감사드립니다.

답변

0

2 행에 값 있는 경우 (제 치수)가 누락되어 있다고 특정하고, 그것은 true를 리턴한다.

변수 이름의 셀 arary를 테이블의 열 인덱스로 사용하여 원하는 열만 선택할 수 있습니다. 그런 다음 누락 된 값이 ismissing인지 확인하고 인지 확인하려면 any을 사용할 수 있습니다. 당신이 행을 제거하는 세 가지 순서대로 NaN을 수 있도록하려면

toremove = any(ismissing(t(:, {'Var1', 'Var2', 'Var3'})), 2); 
subtable = t(~toremove,:); 

또는, 우리는 당신이 R2016b을하거나 업그레이드 할 수 있습니다 경우 대신

toremove = all(ismissing(t(:, {'Var1', 'Var2', 'Var3'})), 2); 
subtable = t(~toremove, :); 
+0

감사합니다 - 오늘 많이 배웠습니다 !!! – fatima55

0

, 당신이해야 and을 사용할 수 있습니다 새로운 체크 아웃 rmmissing function :

x = rand(10,1); x(4) = NaN; 
y = rand(10,1); y(2) = NaN; 
z = rand(10,1); z(1) = NaN; 
T = table(rand(10,1), x, y, z); 
rmmissing(T, 'DataVariables', { 'x', 'y', 'z' }); 
+0

업그레이드를 받으셔서 감사합니다. – fatima55