Is it possible to rename columns in a table?
이전 댓글 표시
Hi, I'm hoping there's a simple way to rename columns in a table. I don't need anything complicated, I'd just like to rename, for example, the 2nd, 7th, and 16th columns of a table - inside a function. Thanks!
댓글 수: 2
Ruxandra Gabriela Ionescu
2021년 9월 8일
You all wrote the same thing, the same example. I asked a question and you answered with an example. I don't examples! I need the solution in my case.. It's simple...
It's unuseful this page, sorry...
per isakson
2021년 9월 8일
"I don't examples! I need the solution in my case.. It's simple... It's unuseful this page, sorry..."
No it's not simple to understand what meaning you put in the word solution.
OP has accepted an answer, thus I believe OP found it at least marginally useful.
채택된 답변
추가 답변 (6개)
Peter Perkins
2015년 2월 19일
The following are also possible:
Rename only some variables (note the parentheses on the left-hand side and the cell array of strings on the right-hand side) ...
>> T.Properties.VariableNames([1 3]) = {'Gender' 'Height'}
T =
Gender Var2 Height Var4
______ ____ ______ ____
M 38 71 176
M 43 69 163
F 38 64 131
F 40 67 133
F 49 64 119
... or rename only one variable (note the braces on the LHS instead of parentheses, and the raw string on the RHS) ...
>> T.Properties.VariableNames{2} = 'Age'
T =
Gender Age Height Var4
______ ___ ______ ____
M 38 71 176
M 43 69 163
F 38 64 131
F 40 67 133
F 49 64 119
... or rename a variable when you only know its (old) name.
>> T.Properties.VariableNames{'Var4'} = 'Weight'
T =
Gender Age Height Weight
______ ___ ______ ______
M 38 71 176
M 43 69 163
F 38 64 131
F 40 67 133
F 49 64 119
댓글 수: 2
Chelsea
2015년 2월 19일
Jonathon Klepatzki
2023년 10월 16일
That was awesome! Just fixed my tables with this method!
Campion Loong
2021년 10월 20일
2 개 추천
Renaming table and timetable variables has become straightforward since R2020a:
Also check out the suite of convenient functions for table/timetable manipulations
Oleg Komarov
2015년 4월 22일
1 개 추천
The description is usually updated on https://github.com/okomarov/tableutils
Martin Patz
2017년 7월 21일
I agree with Cbhihe's comment above, the proposed solutions do not directly answer the OP's question. I face a case where the differentiation between column header variable is indeed important. For instance
v1 = [1:3]';
v2 = [2:4]';
m = [v1, v2];
t1 = table(v1, v2)
t2 = table(m)
gives two different results:
t1 =
v1 v2
__ __
1 2
2 3
3 4
t2 =
m
______
1 2
2 3
3 4
with previously posted answers it is not possible to rename the columns of t2 by specifying 'VariableNames', {'column_1', 'column_2'} as additional arguments to the table command. However you can split up a matrix into separate columns, which are then configureable, using the array2table command.
Example:
t3 = array2table(m, 'VariableNames', {'column_1', 'column_2'})
column_1 column_2
________ ________
1 2
2 3
3 4
댓글 수: 2
Walter Roberson
2017년 7월 21일
I disagree. t2 has only one column, which happens to be a 3 x 2 array.
... Any other interpretation would require that you be able to give separate column headers for each character in variable-length strings.
Peter Perkins
2017년 7월 21일
This is the very reason why we try to refer to the vertical things in a table as "variables", not as "columns".
Martin, m in your example is an Nx2 double. Double arrays have no way to "name" their columns, and you are correct that just putting an Nx2 double into a table does not add that capability. You might do one of two things:
1) As you say, it's pretty easy to split the Nx2 into two Nx1 column vectors. But presumably, there's some reason why you'd want m as an Nx2 rather than splitting it.
2) You could make m itself a table with two variables, and out that in a table. That would be kind of pointless if the outer table only had m as its one variable, but in cases wher you have a table with several variables, one of which has multiple columns, it can be useful. Currently, the display for a "table in a table" is not very helpful, but all of the subscripting and so on works as you'd expect. On the other hand, a table is not a double, so while this strategy keeps those two columns "together" in some sense, you might want to work with m as a double.
Ruxandra Gabriela Ionescu
2021년 9월 6일
0 개 추천
I have matrix B=[10 11 12 13 14; 15 16 17 18 19; 20 21 22 23 24; 25 26 27 28 29; 30 31 32 33 34].
- How can I set the name of the columns with ab, bc, cd, de and ef?
- How can I add a new column "fg" with the value 100?
- How can I set the values from cd and lines 1,2,3 at NaN value? I don't know what is NaN.
Thank you!
댓글 수: 2
per isakson
2021년 9월 8일
This is a new question and posting it as such increases the chances to get an answer.
Sounds like homework to me,
B=[10 11 12 13 14; 15 16 17 18 19; 20 21 22 23 24; 25 26 27 28 29; 30 31 32 33 34]
T = cell2table(num2cell(B), 'VariableNames', {'ab', 'bc', 'cd', 'de', 'ef'})
T.fg(1:5) = sum(T{3,:}) - T.ab(1)
T.cd(1:3) = inf - inf
This way of an array to table conversion is also feasible and less computationally intensive.
B=[10 11 12 13 14; 15 16 17 18 19; 20 21 22 23 24; 25 26 27 28 29; 30 31 32 33 34]
T = array2table(B, 'VariableNames', {'ab', 'bc', 'cd', 'de', 'ef'})
카테고리
도움말 센터 및 File Exchange에서 Tables에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!