Replace NaN in table with a corresponding value in a different column
이전 댓글 표시
I have a table A with several columns (A1, A2, A3, A4... A33). I want to check Nan values in column A5, then replace them with the value in corresponding row in column A8.
Following is my code, but it does not seem to work correctly.
NewValue = A.A5;
if isnan(A.A5)
NewValue = A.A8;
end
I also tried to identified with (:,1) in the script. It does not seem to help.
NewValue(:,1)= A.A5(:,1);
if isnan(A.A5(:,1))
NewValue(:,1) = A.A8(:,1);
end
채택된 답변
추가 답변 (1개)
dpb
2018년 7월 6일
You need the logical addressing vector on both sides and address to return table to update the table...
idx=isnan(A.A5);
A(idx,'A5')=A(ix,'A8');
See the section on accessing data in a table for the many possible addressing modes available--it takes some time and experimentation to learn the "tricks" in getting the proper form for the desired task, granted. Access data in a table
댓글 수: 2
Ivy Chen
2018년 7월 6일
dpb
2018년 7월 6일
The above works if the data are already in the table as opposed to creating the table afterwards -- that depends on which way one wants to go at it or, perhaps, if there are data added to an existing table.
I've never found the answer to the Q? as to whether the JIT optimizer is smart enough to recognize the replicated logical test as the other Answer also uses; hence I generally create the temporary to ensure that operation is only done once at the slight expense of a little more memory from the temporary that isn't released unless do so explicitly.
카테고리
도움말 센터 및 File Exchange에서 Tables에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!