Reputation: 4398
I have a dataset that looks very similar to the data below.
I would like to create two groups using values in the group column.
group1 - new &
group2 - old
Within the group1 - new, I would like to then groupby id and take the average of each grouped id and then sum
data:
id type backup free total Last refreshed
a old 1 4 5 11/1/2020
b old 1 4 5 11/1/2020
c old 1 4 5 11/1/2020
d new 2 1 3 11/1/2020
e new 2 1 3 11/1/2020
f old 1 1 2 11/1/2020
g old 1 1 2 11/1/2020
e new 2 2 4 11/1/2020
d new 2 2 4 11/1/2020
1st step - create group1 and group2
id group type used free total Last refreshed
a group2 old 1 4 5 11/1/2020
b group2 old 1 4 5 11/1/2020
c group2 old 1 4 5 11/1/2020
f group2 old 1 1 2 11/1/2020
g group2 old 1 1 2 11/1/2020
d group1 new 2 1 3 11/1/2020
e group1 new 2 1 3 11/1/2020
e group1 new 2 2 4 11/1/2020
d group1 new 2 2 4 11/1/2020
2nd step groupby id
id group type used free total Last refreshed
d new group1 2 1 3 11/1/2020
d new group1 2 2 4 11/1/2020
e new group1 2 1 3 11/1/2020
e new group1 2 2 4 11/1/2020
a old group2 1 4 5 11/1/2020
b old group2 1 4 5 11/1/2020
c old group2 1 4 5 11/1/2020
f old group2 1 1 2 11/1/2020
g old group2 1 1 2 11/1/2020
3rd step we groupby id and take the average of d (for each column) we groupby id and take the average of e (for each column) then we sum the values in the old group (for each column) then we sum these altogether
id used free total Last refreshed
d 2 1.5 3.5 11/1/2020
e 2 1.5 3.5 11/1/2020
old 5 14 19 11/1/2020
Desired Result
All summed together to get:
used free total Last refreshed
9 17 26 11/1/2020
graph:
This is what I am doing:
2.place the type in groups 2.create calculated field
zn(avg(if [Group]= 'Group1' end))
+
zn(sum(if [Group] = 'Group2' end))
any suggestion is appreciated
Upvotes: 1
Views: 148
Reputation: 26218
For the first part i.e. groupby transformations and aggregations please create three calculated fields with the following calculations
desired free
{SUM({Fixed [Last Refreshed]: SUM(IF [Type] = "new" THEN
{FIXED [Last Refreshed], [Type], [Id] : AVG([Free])}
ELSEIF [Type] = "old"
THEN {FIXED [Last Refreshed], [Type], [Id] : SUM([Free])}
END)})}
similarly for desired used
and desired total
. You'll get a aggregated table as desired (see screenshot)
For creating a bar chart (stacked) you'll have to pivot (transform) the data by clubbing used and free into one dimension. If you want I can again present you a solution.
Upvotes: 1