Create dummy variables from elements of a cell
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Maria
le 14 Août 2014
Réponse apportée : Azzi Abdelmalek
le 14 Août 2014
I have a cell type variable X with 100 rows and 8 columns. Here is an example:
X={
c1 c2 c3 c4 c5 c6 c7 c8
18 1 53.33 15.08 67 16 20601 1999
26 0 53.96 14.20 11 254 40406 1998
29 0 60.54 2.38 13 100 20601 1997
44 0 51.25 16.06 115 254 20601 1999 }
From c4 (included)and onwards I am trying to create dummy variables for each single different value. For instance, in this example in c8 I would only create 3 dummy variables (1997, 1998, 1999). But in c5 I will have to create 4 different dummies (67, 11,13,115). So in this example what I would have would be something similar to this:
c1 c2 c3 15.08 14.20 2.38 16.06 67 11 13 115 16 254 100 20601 40406 1999 1998 1997
18 1 53.33 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0
26 0 53.96 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0
29 0 60.54 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1
44 0 51.25 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0
Can someone help me? Thank you.
0 commentaires
Réponse acceptée
Azzi Abdelmalek
le 14 Août 2014
X={'c1' 'c2' 'c3' 'c4' 'c5' 'c6' 'c7' 'c8'
18 1 53.33 15.08 67 16 20601 1999
26 0 53.96 14.20 11 254 40406 1998
29 0 60.54 2.38 13 100 20601 1997
44 0 51.25 16.06 115 254 20601 1999 }
a=unique(cell2mat(X(2:end,4:end)),'stable');
v(1,1:3)=X(1,1:3);
v(3+1:3+numel(a))=num2cell(a);
for k=2:size(X,1)
idx{k-1}=ismember(cell2mat(v(1,4:end)),cell2mat(X(k,4:end) ));
end
out=[v;[X(2:end,1:3) num2cell(cell2mat(idx'))]]
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!