How to give range of cells different variable names?

2 Ansichten (letzte 30 Tage)
Abigail
Abigail am 12 Aug. 2024
Kommentiert: Voss am 13 Aug. 2024
Hello!
I am collecting data from a range of cells from an .xlsx file using the readmatrix function as so:
Datafiles(j).data = readmatrix(Data,'Sheet','Report','Range','M18:N18','FileType','spreadsheet');
Then I populate that data into a new excel file like so:
CurrentData = {Datafiles.data}';
TABLE_Pass = table(CurrentData);
TABLE = vertcat(TABLE_Pass);
Now, my problem is, it spits out the data in 2 columns labeled "CurrentData_1" "CurrentData_2" and I want to specify the name of the second column.
When I create a second variable name, it gives me 4 columns with the information doubled.
Any tips on how to give the data 2 separate variable names?

Akzeptierte Antwort

Star Strider
Star Strider am 12 Aug. 2024
It might help to have the file.
Otherwise, conbbsider specifying the variable names as (for example):
TABLE.Properties.VariableNames = {'Variable Name 1','Variable Name 2'}
of course using the varialbe names you want to assign to them.
.
  4 Kommentare
Abigail
Abigail am 13 Aug. 2024
This is the file it's current spitting out. I want to be able to name the columns, so they actually represent the data beneath them. "data" is the path where the excel files are located.
Star Strider
Star Strider am 13 Aug. 2024
I don’t know what they should be called, however this is how to change their names. Insert the correct names for ‘Column 1’ and ‘Column 2’. (In R2023b, spaces and some other special characters are permitted.)
Data = 'CurrentData.xlsx';
data = readtable(Data)
data = 4x2 table
CurrentData_1 CurrentData_2 _____________ _____________ 6.4 0.5 6.5 0.7 6.1 0.2 6.3 0.1
data.Properties.VariableNames = {'Column 1','Column 2'}
data = 4x2 table
Column 1 Column 2 ________ ________ 6.4 0.5 6.5 0.7 6.1 0.2 6.3 0.1
.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Voss
Voss am 12 Aug. 2024
Try replacing this
CurrentData = {Datafiles.data}';
TABLE_Pass = table(CurrentData);
TABLE = vertcat(TABLE_Pass);
with this
CurrentData = vertcat(Datafiles.data);
TABLE = array2table(CurrentData,'VariableNames',{'x','y'});
and replace 'x' and 'y' with the variable names you want to use.
  2 Kommentare
Abigail
Abigail am 13 Aug. 2024
This gives me the same problem I have with the current code I'm using. I can't have 2 different variable names because both sets of data are coming from
Datafiles(j).data = readmatrix(Data,'Sheet','Report','Range','M18:N18','FileType','spreadsheet');
and if I create
CurrentData = {Datafiles.data}';
CurrentData2 = {Datafiles.data}';
It just doubles the information I need.
Any thoughts on how I can either 1. make them different variables or 2. make one variable equal just M18 and the other equal just N18?
Thanks!
Voss
Voss am 13 Aug. 2024

Don't create a cell array of 1-by-2 vectors by doing this:

CurrentData = {Datafiles.data}';

because that will lead to a table with one variable, which is a cell array of 1-by-2 vectors.

Instead, create an N-by-2 matrix by doing what I showed in my answer:

CurrentData = vertcat(Datafiles.data);

because that will lead to a table with two variables, which you can name individually.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Data Import from MATLAB finden Sie in Help Center und File Exchange

Produkte


Version

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by