本期案例是根據級别情況進行統計顯示,前後轉換效果如下:
解題套路
1.Text.Select
思路比較簡單,按級别進行周遊,提取對應級别的字元,然後計算字元長度。
Table.AddColumn(源,"統計",each Text.Combine(List.Transform({"優","良","中","差"},(x)=>Text.Format("#{0}:#{1}",{x,Text.Length(Text.Select([級别],x))}))," "))
2.TextPositionOf
通過判斷各級别在“級别”中的所有位置,然後統計個數。
Table.AddColumn(源,"統計",each Text.Combine(List.Transform({"優","良","中","差"},(x)=>Text.Format("#{0}:#{1}",{x,List.Count(Text.PositionOf([級别],x,2))}))," "))
3.Table.Group
将“級别”進行拆分,轉換為表進行分組。
Table.AddColumn(源,"統計",each Text.Combine(List.Transform(List.Sort(Table.ToRows(Table.Group(Table.FromColumns({Text.ToList([級别])}),"Column1",{"a",each List.Count([Column1])})),each Text.PositionOf("優良中差",_{0})),(x)=>Text.Format("#{0}:#{1}",x))," "))
4.List.Accumulate
将“級别”轉換為清單,并排序,然後對各級别進行拆分統計。
Table.AddColumn(源,"統計",each Text.Combine(List.Accumulate(List.Sort(Text.ToList([級别]),each Text.PositionOf("優良中差",_))&{""},{{},{}},(x,y)=>if x{1}={} or List.Last(x{1})=y then {x{0},x{1}&{y}} else {x{0}&{Text.Format("#{0}:#{1}",{x{1}{0},List.Count(x{1})})},{y}}){0}," "))
以上是本期内容。