我想根据另一列中的值来拆分一列中的值,如下例所示:
团体 | 价值 |
---|---|
第 1 组 | 7 |
第 1 组 | 4 |
第 1 组 | 9 |
第 2 组 | 1 |
第 2 组 | 8 |
第 2 组 | 1 |
第 2 组 | 5 |
第 2 组 | 3 |
第 3 组 | 6 |
第 3 组 | 10 |
第 3 组 | 5 |
第 3 组 | 4 |
期望结果:
第 1 组 | 第 2 组 | 第 3 组 |
---|---|---|
7 | 1 | 6 |
4 | 8 | 10 |
9 | 1 | 5 |
5 | 4 | |
3 |
我有一张包含大量数据的表格,我想对其进行单向方差分析,但据我所知,方差分析需要将数据放在分组的相邻列上。有没有办法以某种自动方式实现这一点?如果可能的话,当我有两个以上的组和值列时,我有机会选择组和值列。
谢谢!
答案1
Power Query 解决方案,根据你的数据 如果你要重复执行此操作,并且组中的值数量不同,如果没有获得预期的结果,则可能需要编辑 M 代码
- 从表/范围获取数据 =>
- 按
Group
操作分组All Rows
- 添加列 => 自定义列 => 公式:
=Table.Column([Grouped],"Value")
选择自定义列顶部的双箭头并
Extract Values
使用分号作为分隔符按分隔符(分号)拆分自定义列
转置表格并使用第一行作为标题
M 代码由上述步骤生成:
let
Source = Excel.CurrentWorkbook(){[Name="Table20"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Group", type text}, {"Value", Int64.Type}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"Group"}, {{"Grouped", each _, type table [Group=nullable text, Value=nullable number]}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each Table.Column([Grouped],"Value")),
#"Extracted Values" = Table.TransformColumns(#"Added Custom", {"Custom", each Text.Combine(List.Transform(_, Text.From), ";"), type text}),
#"Removed Columns" = Table.RemoveColumns(#"Extracted Values",{"Grouped"}),
#"Split Column by Delimiter" = Table.SplitColumn(#"Removed Columns", "Custom", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"Custom.1", "Custom.2", "Custom.3", "Custom.4", "Custom.5"}),
#"Transposed Table" = Table.Transpose(#"Split Column by Delimiter"),
#"Promoted Headers" = Table.PromoteHeaders(#"Transposed Table", [PromoteAllScalars=true]),
#"Changed Type1" = Table.TransformColumnTypes(#"Promoted Headers",{{"Group 1", Int64.Type}, {"Group 2", Int64.Type}, {"Group 3", Int64.Type}})
in
#"Changed Type1"
数据与结果
答案2
假设您的数据位于 Sheet1 中的 A 列和 B 列中:
在新工作表的 A1 中输入此公式:
=TRANSPOSE (UNIQUE(FILTER(Sheet1!A:A, ROW(Sheet1!A:A) <>1))
并将此公式复制到 A2:
=FILTER(Sheet1$B:$B,sheet1!$A:$A=A$1)
根据需要将其复制到其他列
此功能适用于 Office 365,不适用于以前的版本