Home » Top Initials of First Ladies

Top Initials of First Ladies

List the First Ladies’ names which start with Top 3 most frequently occurring letters. Top 3 most frequent letters with which a name starts in the data are E, L, M – 7 times J – 5 times H – 4 times

📌 Challenge Details and Links
ExcelBI Excel Challenge Number: 165
Challenge Difficulty: ⭐️⭐️
📥Download Sample File
📥Link to the solutions on LinkedIn

Solving the challenge of Top Initials of First Ladies with Power Query

Power Query solution 1 for Top Initials of First Ladies, proposed by Zoran Milokanović:
let
  Source = Excel.CurrentWorkbook(){[Name = "Input"]}[Content], 
  ExtractedFirstLetters = Table.TransformColumns(Source, {{"First Ladies", each Text.Start(_, 1)}}), 
  GroupedLetters = Table.Group(
    ExtractedFirstLetters, 
    {"First Ladies"}, 
    {{"Occurrence", each Table.RowCount(_), Int64.Type}}
  ), 
  GroupedOccurrences = Table.Group(
    GroupedLetters, 
    {"Occurrence"}, 
    {{"Letters", each [First Ladies]}}
  ), 
  SortedOccurrences = Table.Sort(GroupedOccurrences, {{"Occurrence", 1}}), 
  Top3MostFrequentLetters = Text.Combine(List.Combine(List.FirstN(SortedOccurrences[Letters], 3))), 
  FilteredRows = Table.SelectRows(
    Source, 
    each Text.Contains(Top3MostFrequentLetters, Text.Start([First Ladies], 1))
  ), 
  Solution = Table.RenameColumns(FilteredRows, {{"First Ladies", "Answer Expected"}})
in
  Solution
Power Query solution 2 for Top Initials of First Ladies, proposed by Aditya Kumar Darak 🇮🇳:
let
  Source = Excel.CurrentWorkbook(){[Name = "data"]}[Content], 
  TopN = 3, 
  FL = Table.AddColumn(Source, "First Letter", each Text.Start([First Ladies], 1)), 
  Group = Table.Group(
    FL, 
    "First Letter", 
    {{"Count", Table.RowCount}, {"Answer", each [First Ladies]}}
  ), 
  Large = List.Sort(List.Distinct(Group[Count]), Order.Descending){TopN - 1}, 
  FTopN = Table.SelectRows(Group, each [Count] >= Large)[[Answer]], 
  Expand = Table.ExpandListColumn(FTopN, "Answer"), 
  Return = Table.Sort(Expand, "Answer")
in
  Return
Power Query solution 3 for Top Initials of First Ladies, proposed by Alejandro Simón 🇵🇦 🇪🇸:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  FirstLetter = Table.AddColumn(Source, "Letters", each Text.Start([First Ladies], 1)), 
  Group = Table.Group(
    FirstLetter, 
    {"Letters"}, 
    {{"Count", each Table.RowCount(_)}, {"Answer", each [First Ladies]}}
  ), 
  Top3 = List.MaxN(List.Distinct(Group[Count]), 3), 
  Sol = List.Combine(Table.SelectRows(Group, each [Count] >= List.Min(Top3))[Answer])
in
  Sol
Power Query solution 4 for Top Initials of First Ladies, proposed by Luan Rodrigues:
let
  Fonte = Tabela1, 
  tab = Table.AddColumn(Fonte, "Personalizar", each Text.Start([First Ladies], 1)), 
  gp = Table.Group(tab, {"Personalizar"}, {{"Contagem", each Table.RowCount(_), Int64.Type}}), 
  fil = List.MaxN(List.Distinct(gp[Contagem]), 3), 
  list = List.Buffer(
    List.Sort(Table.SelectRows(gp, each List.Contains(fil, [Contagem]))[Personalizar])
  ), 
  res = Table.SelectRows(
    tab, 
    each List.AnyTrue(List.Transform(list, (x) => Text.StartsWith([First Ladies], x)))
  )[[First Ladies]]
in
  res
Power Query solution 5 for Top Initials of First Ladies, proposed by Brian Julius:
letter, add rank helper column, filter and clean up.
let
 Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
 StartingLetter = Table.AddColumn(Source, "Letter", each Text.Start([First Ladies], 1)),
 Group = Table.Group(StartingLetter, {"Letter"}, {{"Count", each Table.RowCount(_), Int64.Type}, {"All", each _, type table [First Ladies=text, Letter=text]}}),
 AddRank = Table.ExpandTableColumn( Table.AddRankColumn( Group, "Rank", {"Count", Order.Descending}, [RankKind = RankKind.Dense]), "All", {"First Ladies"}),
 Clean = Table.RenameColumns( Table.SelectColumns( Table.SelectRows( AddRank, each [Rank] <= 3), "First Ladies"), {"First Ladies", "Answer"})
in
 Clean
                    
                  
          

Solving the challenge of Top Initials of First Ladies with Excel

Excel solution 1 for Top Initials of First Ladies, proposed by Bo Rydobon 🇹🇭:
=LET(z,A2:A48,c,COUNTIF(z,LEFT(z)&"*"),FILTER(z,c>LARGE(UNIQUE(c),4)))
Excel solution 2 for Top Initials of First Ladies, proposed by Rick Rothstein:
=LET(a,A2:A48,f,LEFT(a),u,UNIQUE(f),c,COUNTIF(a,u&"*"),FILTER(a,ISNUMBER(FIND(f,CONCAT(FILTER(u,c>LARGE(UNIQUE(c),4)))))))
Excel solution 3 for Top Initials of First Ladies, proposed by محمد حلمي:
=LET(
e,A2:A48,
i,MAP(UNIQUE(LEFT(e)),LAMBDA(a,
SUM(--(a=LEFT(e))))),
v,FILTER(UNIQUE(LEFT(e)),i>=
LARGE(UNIQUE(i),3)),
FILTER(e,MMULT(--(LEFT(e)=TOROW(v)),
SEQUENCE(ROWS(v))^0)))
Excel solution 4 for Top Initials of First Ladies, proposed by Kris Jaganah:
=LET(a,A2:A48,b,LEFT(a),c,UNIQUE(b),d,MAP(c,LAMBDA(z,SUM(--(b=z)))),e,FILTER(c,d>=LARGE(UNIQUE(d),3)),DROP(REDUCE(0,e,LAMBDA(x,y,VSTACK(x,FILTER(a,b=y)))),1))
Excel solution 5 for Top Initials of First Ladies, proposed by Julian Poeltl:
=LET(F,A2:A48,L,LEFT(F,1),U,UNIQUE(L),M,MAP(U,LAMBDA(A,ROWS(FILTER(F,L=A)))),G,FILTER(U,M>LARGE(UNIQUE(M),4)),FILTER(F,ISNUMBER(XMATCH(L,G))))
Excel solution 6 for Top Initials of First Ladies, proposed by Timothée BLIOT:
=LET(A, A2:A48, B, LEFT(A), C, BYROW(B, LAMBDA(x, SUMPRODUCT(1*(x=B)) )), FILTER(A, C>=LARGE(UNIQUE(C),3)) )
Excel solution 7 for Top Initials of First Ladies, proposed by Hussein SATOUR:
=LET(f,A2:A48, c,COUNTIF(f,LEFT(f)&"*"), FILTER(f, c>LARGE(UNIQUE(c), 4)))
Excel solution 8 for Top Initials of First Ladies, proposed by Oscar Mendez Roca Farell:
=LET(_d, A2:A48,_c, CODE(_d), _f, MMULT(--(_c=TOROW(_c)), _c^0), FILTER(_d, _f>LARGE( UNIQUE(_f), 4)))
Excel solution 9 for Top Initials of First Ladies, proposed by Sunny Baggu:
=LET(_list,A2:A48,_l,LEFT(_list),_cnt,MAP(_l,LAMBDA(a,ROWS(FILTER(_l,_l=a)))),_limit,LARGE(SORT(UNIQUE(_cnt),,-1),3),FILTER(_list,_cnt>=_limit))
Excel solution 10 for Top Initials of First Ladies, proposed by Md. Zohurul Islam:
=LET(u,A2:A48,v,LEFT(u),unq,UNIQUE(v),
n,MAP(unq,LAMBDA(x,SUM(ABS(x=v)))),
st,TOROW(FILTER(unq,n>=LARGE(UNIQUE(n),3))),
a,BYROW(ABS(v=st),SUM),
b,FILTER(u,a),
b)
Excel solution 11 for Top Initials of First Ladies, proposed by Tolga Demirci, PMP, PMI-ACP, MOS-Expert:
=LET(t;A2:A48;a;ROW(A2:A48);b;COUNTIF(t;LEFT(t)&"*");c;{1;2;3};SORT(INDEX(A2:A48;LET(d;TOCOL(TEXTSPLIT(CONCAT(MAP(MAP(LARGE(UNIQUE(b);c);LAMBDA(q;TEXTJOIN(", ";;LET(e;IFERROR(MAP(b;a-1;LAMBDA(y;z;XLOOKUP(q;y;z)));"");FILTER(e;e<>"")))));LAMBDA(w;TEXTJOIN("; ";;TEXTSPLIT(w;;", "))&"/")));"; ";"/";1;;""));FILTER(d;d<>""));;1)))
Excel solution 12 for Top Initials of First Ladies, proposed by Gerson Pineda:
=LET(z,A2:A48,c,COUNTIF(z,LEFT(z)&"*"),FILTER(z,c>3))
Excel solution 13 for Top Initials of First Ladies, proposed by Pieter de Bruijn:
=LET(a,A2:A3385,l,LEFT(a),x,XMATCH(l,l),f,DROP(FREQUENCY(x,x),-1),y,XLOOKUP(x,x,f),t,LARGE(UNIQUE(f),{1,2,3}),FILTER(a,MMULT(N(t=y),{1;2;3}),""))
Excel solution 14 for Top Initials of First Ladies, proposed by Abhishek Kumar Jain:
=LET(a,CHAR(SEQUENCE(26,,65)),b,COUNTIFS(A2:A48,a&"*"),c,FILTER(a,b>LARGE(UNIQUE(b),4)),FILTER(A2:A48,IFERROR(XMATCH(LEFT(A2:A48),c),0)>0))
Excel solution 15 for Top Initials of First Ladies, proposed by Guillermo Arroyo:
=LET(n,A2:A48,f,LEFT(n),u,CODE(f),p,DROP(FREQUENCY(u,u),-1),q,FILTER(f,p>=LARGE(UNIQUE(p),3)),DROP(REDUCE("",q,LAMBDA(i,j,VSTACK(i,FILTER(n,f=j)))),1))
Excel solution 16 for Top Initials of First Ladies, proposed by Miguel Angel Franco García:
=LET(a;
    SI((IZQUIERDA(
        A2:A48
    )="E")+(IZQUIERDA(
        A2:A48
    )="L")+(IZQUIERDA(
        A2:A48
    )="M")+(IZQUIERDA(
        A2:A48
    )="J")+(IZQUIERDA(
        A2:A48
    )="H")=1;
     A2:A48;
    "");
     FILTRAR(
         a;
         a<>""
     ))

&&&

Leave a Reply