如何在 Excel 或 R 中重塑此数据库

问题描述 投票:0回答:1

如何将A型组织的数据库转变为B型组织?

水果 标记 conf_1 conf_2
橙色 C 123 456
橙色 B 123 456
橙色 A 123 456
苹果 C 987 654
苹果 B 987 654
苹果 A 987 654
李子 C 321 654
李子 B 321 654
李子 A 321 654
梨子 C 765 890
梨子 B 765 890
梨子 A 765 890
葡萄 C 235 652
桃子 A 876 325
桃子 C 876 325

我在 Excel 中有这个数据集,但也在 R 中工作。所以我可以在 Excel 或 R 中执行此操作。但是如何执行?

excel transformation
1个回答
1
投票

这个 PowerQuery 可以做到:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    ChangeType = Table.TransformColumnTypes(Source,{{"fruits", type text}, {"marker", type text}, {"conf_1", Int64.Type}, {"conf_2", Int64.Type}}),
    RemoveDuplicate = Table.Distinct(ChangeType, {"fruits", "conf_1", "conf_2"}),

    PivotColumn = Table.Pivot(ChangeType, List.Distinct(ChangeType[marker]), "marker", "fruits", List.Count),
    MergeData = Table.NestedJoin(PivotColumn, {"conf_1", "conf_2"}, RemoveDuplicate, {"conf_1", "conf_2"}, "Fruits", JoinKind.LeftOuter),
    ExpandData = Table.ExpandTableColumn(MergeData, "Fruits", {"fruits"}, {"fruits"}),
    ReorderColumns = Table.ReorderColumns(ExpandData,{"fruits", "A", "B", "C", "conf_1", "conf_2"})
in
    ReorderColumns  

或者正如@Zack 建议的那样,您可以使用数据透视表。
数据透视表绝对不是我的强项,所以可能是更好的方法。

  • fruitsconf_1conf_2 添加到 Rows
  • 标记添加到
  • 右键单击数据透视表并选择数据透视表选项
    删除总计和筛选器选项卡下的行总计列总计中的勾号。
  • 在数据透视表的 Design 选项卡中,从 Report Layout 下拉列表中选择 以表格形式显示
  • 选择每个总计并右键单击并选择字段设置
    选择作为小计。

© www.soinside.com 2019 - 2024. All rights reserved.