MATLAB Answers

0

Big table with zero

babyelephant さんによって質問されました 2019 年 3 月 14 日
最新アクティビティ babyelephant さんによって 回答されました 2019 年 3 月 22 日
T = [];
p=5;
for i =5:10
p=i+1;
T = data(p,11:74)
T(:,all(ismissing(T,0)))=[]
end
I have a big table where I need to read the entries row wise and remove all the col which has zero value. I am reading all the row using a loop . Kindly let me know the best.
var1 var2 var3 var4 var5
row1 0 1 0 0 1
var1 var2 var3 var4 var5
row2 1 1 0 0 1
results should be
var1 var2 var5
row2 1 1 1

  0 件のコメント

サインイン to comment.

3 件の回答

Kevin Phung
回答者: Kevin Phung
2019 年 3 月 14 日
 採用された回答

for an array, say:
a =
1 0 0
1 0 1
1 1 1
0 0 1
you can just do:
any(a==0,1)
to find all columns that contain a 0.

  7 件のコメント

Kevin Phung
2019 年 3 月 18 日
if T is your Table,
T.Properties.VariableNames
returns the column names of the table. So just do indexing for the columns you want.
if I had columns c1 c2 c3 c4 c5, and wanted to look at columns c2 and c5:
col = {'c1','c2'}
T{:,ismember(T.Properties.VariableNames,col)} % Walter's comment with curly brackets will replace the table2array command
Walter Roberson
2019 年 3 月 18 日
T{:,col}
The table indexing syntax permits a cell array of column names.
babyelephant 2019 年 3 月 20 日
data=pat(2:end,11:74); %change according to file
nrows=10;%change according to file
T = [];
val=data(1,1);
for i = 1:nrows
if i ==i
p=i;
T = data(p,:);
elseif val==data(i,1)
T = data(p+1,:);
end
T(:,all(ismissing(T,'')))=[]
col=T.Properties.VariableNames
T(any(T{:,:}==0,2),:) =[]
end
col=T.Properties.VariableNames;
coln=64;
valz=col{1}
for i = 1:64
if i ==i
s=i;
TZ = col{s};
T{:,ismember(T.Properties.VariableNames,TZ)}
end
end
I am new to MATLAB so may be my code looks not good. sorry for this.
Answer should be in a row wise loop for every row I should get only those col which contains one.

サインイン to comment.


回答者: babyelephant 2019 年 3 月 20 日

I can also use
[num,txt,raw] = xlsread('pat-test.xlsx');
raw{2,1}
num(2,1)
txt(1,:)
but then I can not find it out how I get the row without zero value col.

  1 件のコメント

Walter Roberson
2019 年 3 月 20 日
num_not_empty = num(any(num,2),:);

サインイン to comment.


回答者: babyelephant 2019 年 3 月 22 日

Hello, Finally its done . Thank you all.
A=num(i,:); %get all the entries
A(isnan(A)) = 0; %convert NaN to zero
pos=find(A); %to find the possition of 1
[m,n] =size(pos);

  0 件のコメント

サインイン to comment.



Translated by