How to delete 'NA' columns from a text file?
조회 수: 1 (최근 30일)
이전 댓글 표시
Hi guys, I have a text file which has 7 rows and 499 columns and in some columns, there are 'NA'
How can i delete them?
Example.txt:
NA T2b t1c t3b
60 79 78 50
7 7 9 7
t2c t3a t2c t3b
4 5 3 NA
0.1 0.1 0.18 0.1
4 4 5 3
댓글 수: 2
Akira Agata
2018년 4월 3일
You mean, you want to replace 'NA' with some value, such as 0? or you want to delete row or column with 'NA'?
채택된 답변
Stephen23
2018년 4월 3일
편집: Stephen23
2018년 4월 3일
opt = {'MultipleDelimsAsOne',true};
fmt = repmat('%s',1,4); % define how many columns!
[fid,msg] = fopen('test.txt','rt');
assert(fid>=3,msg)
C = textscan(fid,fmt,opt{:});
fclose(fid);
C = [C{:}];
idx = any(strcmp(C,'NA'),1);
D = C(:,~idx);
which generates this matrix:
D =
T2b t1c
79 78
7 9
t3a t2c
5 3
0.1 0.18
4 5
The test file is attached to this answer. It is also easy to write this to a new file:
tmp = D';
len = max(cellfun('length',D(:)));
fmt = sprintf('%%-%ds',len+1);
fmt = [repmat(fmt,1,size(D,2)),'\n'];
[fid,msg] = fopen('test_new.txt','wt');
assert(fid>=3,msg)
fprintf(fid,fmt,tmp{:});
fclose(fid);
this generates a new file which looks like this:
T2b t1c
79 78
7 9
t3a t2c
5 3
0.1 0.18
4 5
추가 답변 (1개)
KSSV
2018년 4월 3일
fid = fopen('data.txt','rt') ;
S = textscan(fid,'%s','delimiter','\n') ;
fclose(fid) ;
S = S{1} ;
idx = strfind(S, 'NA');
idx = find((cellfun('isempty', idx)));
S = S(idx)
참고 항목
카테고리
Help Center 및 File Exchange에서 Text Data Preparation에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!