Define a collection of variables

7 visualizaciones (últimos 30 días)
alpedhuez
alpedhuez el 16 de En. de 2021
Comentada: alpedhuez el 17 de En. de 2021
Suppose I have a table
date visitor city dummy_for_January dummy_for_February dummy_for_March
----------------------------------------------------------------------------------------------------------
I want to define a collection of such dummy variables so that I do not need to write them one by one each time. Please advise.
  2 comentarios
Cris LaPierre
Cris LaPierre el 16 de En. de 2021
Assuming you already have a table defined, you can extract the variable names from the table and store them in a variable.
varNames = table.Properties.VariableNames
You can then save that variable to a mat file if you want to have the variable accessible from one matlab session to the next.
Image Analyst
Image Analyst el 16 de En. de 2021
I have no idea. To create a variable, you're going to have to write it - you'll have to see its name down in your script somewhere, which means you typed it. It won't just magically create itself somehow without being written. Try this:

Iniciar sesión para comentar.

Respuesta aceptada

Matt J
Matt J el 17 de En. de 2021
Since you already have the data in table form, you can just do things like,
mdl=fitlm(T(:,["Albania","Afghanistan","sales"]))
  5 comentarios
Matt J
Matt J el 17 de En. de 2021
First, create a copy of the table containing only the countries,
Tcountries=T;
Tcountries(:,["population" "area" "income"])=[]; %discard non-country variables
Now, you can do things like,
mdl1=fitlm([Tcountries, T(:,"population")]);
mdl2=fitlm([Tcountries, T(:,"area")]);
mdl3=fitlm([Tcountries, T(:,"income")]);
alpedhuez
alpedhuez el 17 de En. de 2021
Thank you.

Iniciar sesión para comentar.

Más respuestas (1)

Walter Roberson
Walter Roberson el 16 de En. de 2021
mons = {'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'};
vars = [string({'date', 'visitor', 'city'}), "dummy_for_" + string(mons)];
nvars = length(vars);
T = array2table(zeros(0,nvars), 'VariableNames', vars)
T = 0x15 empty table
T.Properties.VariableNames
ans = 1x15 cell array
{'date'} {'visitor'} {'city'} {'dummy_for_January'} {'dummy_for_February'} {'dummy_for_March'} {'dummy_for_April'} {'dummy_for_May'} {'dummy_for_June'} {'dummy_for_July'} {'dummy_for_August'} {'dummy_for_September'} {'dummy_for_October'} {'dummy_for_November'} {'dummy_for_December'}
  3 comentarios
Steven Lord
Steven Lord el 17 de En. de 2021
There are a number of different ways to retrieve data from a table array. Let's make a sample table.
load patients
patients = table(LastName,Gender,Age,Height,Weight,Smoker,Systolic,Diastolic);
head(patients)
ans = 8x8 table
LastName Gender Age Height Weight Smoker Systolic Diastolic ____________ __________ ___ ______ ______ ______ ________ _________ {'Smith' } {'Male' } 38 71 176 true 124 93 {'Johnson' } {'Male' } 43 69 163 false 109 77 {'Williams'} {'Female'} 38 64 131 false 125 83 {'Jones' } {'Female'} 40 67 133 false 117 75 {'Brown' } {'Female'} 49 64 119 false 122 80 {'Davis' } {'Female'} 46 68 142 false 121 70 {'Miller' } {'Female'} 33 64 142 true 130 88 {'Wilson' } {'Male' } 40 68 180 false 115 82
I can retrieve variables to a normal double array using curly braces and specifying the variables either by name or by number.
T1 = patients{1:8, ["Age", "Height", "Weight"]}
T1 = 8×3
38 71 176 43 69 163 38 64 131 40 67 133 49 64 119 46 68 142 33 64 142 40 68 180
T2 = patients{1:8, 3:5}
T2 = 8×3
38 71 176 43 69 163 38 64 131 40 67 133 49 64 119 46 68 142 33 64 142 40 68 180
Or I can find all variables whose names end with the letter t (as a bit of a silly example.) Note here I'm indexing into the patients table with parentheses so the result is a table (with variable names.)
VN = patients.Properties.VariableNames;
T3 = patients(1:8, endsWith(VN, 't'))
T3 = 8x2 table
Height Weight ______ ______ 71 176 69 163 64 131 67 133 64 119 68 142 64 142 68 180
You could use startsWith, endsWith, contains, or other string processing functions to select specific variables from your table.
alpedhuez
alpedhuez el 17 de En. de 2021
I simply like to define a new variable that is a set of dummy variables in the above example. Is it possible?

Iniciar sesión para comentar.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by