Define a name of the variable using the value of other variable
Ältere Kommentare anzeigen
Suppise I have data
Month Day Visitors
----------------------------
January 1 100
January 7 50
February 1 400
February 3 200
I want to create a variable that is a proxy for months such as
Month Day Visitors proxy_January proxy_February
------------------------------------------------
January 1 100 1 0
January 7 50 1 0
February 1 400 0 1
February 3 200 0 1
One way to do this is to define variables one by one for each month.
But I would like to know how I can let Matlab do this automatically.
I start with
set_of_month=unique(T.Month)
that will give me the set of months. Then I can iterate over the set of months.
But how can I define a variable using set_of_months? I like to do something like
for i=1:length(set_of_states)
for j=1:height(T)
if T.Month(j)=set_of_month(i)
T.set_of_month(i)=1
else
T.set_of_month(i)=0
end
end
end
Please advise.
2 Kommentare
Walter Roberson
am 5 Dez. 2020
Are the months categorical or cell array of character vectors?
alpedhuez
am 5 Dez. 2020
Akzeptierte Antwort
Weitere Antworten (2)
Walter Roberson
am 5 Dez. 2020
T.(set_of_month{i}) = value
4 Kommentare
alpedhuez
am 5 Dez. 2020
Walter Roberson
am 5 Dez. 2020
The implication is that set_of_month is not a cell array of character vectors as you had claimed.
Perhaps your month entries in the table are individual cells rather than character vectors. If so then
monthname = set_of_month{i}{1};
T.(monthname) = value
and monthname is something that you can strcmp() or ismember()
alpedhuez
am 5 Dez. 2020
Steven Lord
am 5 Dez. 2020
Bearbeitet: Steven Lord
am 5 Dez. 2020
M = repelem(["January"; "February"], 2, 1);
D = [1; 7; 1; 3];
V = [100; 50; 400; 200];
T = table(M, D, V, 'VariableNames', ["Month", "Day", "Visitors"])
UM = unique(T.Month);
for whichMonth = 1:numel(UM)
T.("proxy_" + UM(whichMonth)) = T.Month == UM(whichMonth);
end
T
Alternately the unstack function may do what you want (or something similar to what you want.)
Kategorien
Mehr zu Logical finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!