cumulative sum table over group

7 次查看(过去 30 天)
tableA
Name Day Color Quantity
A 1 0 3
A 1 2 3
A 1 3 3
A 2 0 2
A 2 2 4
A 2 3 5
B 1 0 3
B 1 1 3
B 1 3 3
B 2 0 4
B 2 2 1
B 2 3 0
C 1 0 2
C 1 1 1
C 1 2 3
C 2 0 1
C 2 1 2
C 2 2 3
Results : Cumulative sum for each color over the days.
tableA_cumsum
Name Day Color Quantity
A 1 0 3
A 1 2 3
A 1 3 3
A 2 0 5
A 2 2 7
A 2 3 8
B 1 0 3
B 1 1 3
B 1 3 3
B 2 0 12
B 2 2 1
B 2 3 3
C 1 0 2
C 1 1 1
C 1 2 3
C 2 0 4
C 2 1 3
C 2 2 6
Was trying cumsum but not sure how to get the groupings done.

采纳的回答

Bruno Luong
Bruno Luong 2022-5-20
编辑:Bruno Luong 2022-5-20
tableA = {"A" 1 0 3 ;
"A" 1 2 3 ;
"A" 1 3 3 ;
"A" 2 0 2;
"A" 2 2 4 ;
"A" 2 3 5;
"B" 1 0 3 ;
"B" 1 1 3 ;
"B" 1 3 3 ;
"B" 2 0 4 ;
"B" 2 2 1;
"C" 1 0 2 ;
"C" 1 1 1 ;
"C" 1 2 3 ;
"C" 2 0 1;
"C" 2 1 2;
"C" 2 2 3};
tableA = cell2table(tableA, "VariableNames",["Name" "Day" "Color" "Quantity"])
tableA = 17×4 table
Name Day Color Quantity ____ ___ _____ ________ "A" 1 0 3 "A" 1 2 3 "A" 1 3 3 "A" 2 0 2 "A" 2 2 4 "A" 2 3 5 "B" 1 0 3 "B" 1 1 3 "B" 1 3 3 "B" 2 0 4 "B" 2 2 1 "C" 1 0 2 "C" 1 1 1 "C" 1 2 3 "C" 2 0 1 "C" 2 1 2
[~,~,G]=unique([tableA.Name tableA.Color],"rows");
b = zeros(1,max(G));
tableA_cumsum = tableA;
for k=1:length(G)
Gk = G(k);
s = b(Gk) + tableA.Quantity(k);
tableA_cumsum.Quantity(k) = s;
b(Gk) = s;
end
tableA_cumsum
tableA_cumsum = 17×4 table
Name Day Color Quantity ____ ___ _____ ________ "A" 1 0 3 "A" 1 2 3 "A" 1 3 3 "A" 2 0 5 "A" 2 2 7 "A" 2 3 8 "B" 1 0 3 "B" 1 1 3 "B" 1 3 3 "B" 2 0 7 "B" 2 2 1 "C" 1 0 2 "C" 1 1 1 "C" 1 2 3 "C" 2 0 3 "C" 2 1 3

更多回答(1 个)

Steven Lord
Steven Lord 2022-5-20
Take a look at the grouptransform function.
  6 个评论
Frederick Awuah-Gyasi
@_ This worked perfectly. Thanks so much.Thank you @Steven Lord

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Hypothesis Tests 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by