How to create a pivot table

I have a table
date person spendings
----------------------------------------
1/1/2020 John $100
1/1/2020 Mike $50
1/2/2020 John $75
1/3/2020 Mike $40
I want to create a pivot table
John Spendings Mike Spendings
----------------------------------------------------------------------------------
January 2020
February 2020
March 2020
Please advise.

 采纳的回答

I think the unstack function might help you out. I have written a small example using your data:
month = categorical({'Jan';'Jan';'Feb';'March'});
person = categorical({'John';'Mike';'John';'Mike'});
spendings = [100;50;75;40];
T = table(month,person,spendings)
u = unstack(T,'spendings','person')
I think you can customise it according to your needs.
Hope this helps!

3 个评论

The orginal table has dd/mm/yyyy not month. This is the point.
You can utilize the month and datetime functions to tweak them to your required format.
a = month(datetime('1/1/2020','InputFormat','dd/MM/yyyy'),'shortname')
The above line returns the Month in 'Mmm' format, for instance January as 'Jan'. You can tweak some of these properties to obtain the required values which best suits your requirements.
date=datetime(T2.yyyy_mm,'InputFormat','yyyy-MM');

请先登录,再进行评论。

更多回答(1 个)

Lola Davidson
Lola Davidson 2023-3-17

1 个投票

As of R2023a, you can use the "pivot" function: https://www.mathworks.com/help/matlab/ref/pivot.html
Tout = pivot(Tin, Rows="date", RowsBinMethod="month", Columns="person", DataVariable="spendings");

类别

帮助中心File Exchange 中查找有关 Logical 的更多信息

产品

标签

Community Treasure Hunt

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

Start Hunting!

Translated by