Clear Filters
Clear Filters

Assign a table coloumn a particular data type

1 view (last 30 days)
For other reasons I cannot initialize my table as A=table but I must do A= zeros(height(B), 8) and then through array2table I convert my array into a table.
At this point how could I set A(:,2) and A(:,6) to datetime null values?

Accepted Answer

Benjamin Kraus
Benjamin Kraus on 24 May 2021
Edited: Benjamin Kraus on 24 May 2021
You cannot mix data types within a double matrix, but you can mix data types within a table.
So, you cannot convert two columns of A into datetime before creating the table.
I'm curious why you cannot create your table empty and then add colums as needed.
For example:
tbl = table;
B = zeros(10,1);
tbl.Var1 = B;
tbl.Var2 = NaT(size(B))
tbl = 10×2 table
Var1 Var2 ____ ____ 0 NaT 0 NaT 0 NaT 0 NaT 0 NaT 0 NaT 0 NaT 0 NaT 0 NaT 0 NaT
However, if that doesn't work for some reason, maybe this is what you are looking for?
B = zeros(10,1);
A = zeros(height(B),8);
tbl = array2table(A);
tbl.A2 = NaT(height(A),1);
tbl.A6 = NaT(height(A),1)
tbl = 10×8 table
A1 A2 A3 A4 A5 A6 A7 A8 __ ___ __ __ __ ___ __ __ 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0
  2 Comments
Steven Lord
Steven Lord on 24 May 2021
In recent releases:
types = repmat("double", 1, 8);
types([2 6]) = "datetime";
tbl = table('size', [10 8], 'VariableNames', "A"+(1:8), 'VariableTypes', types)
tbl = 10×8 table
A1 A2 A3 A4 A5 A6 A7 A8 __ ___ __ __ __ ___ __ __ 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0 0 NaT 0 0

Sign in to comment.

More Answers (0)

Categories

Find more on Tables in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!