前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >如何把多维数据转换成一维数据?

如何把多维数据转换成一维数据?

作者头像
逍遥之
发布2020-03-24 15:47:24
发布2020-03-24 15:47:24
2.7K00
代码可运行
举报
文章被收录于专栏:数据技巧数据技巧
运行总次数:0
代码可运行

原始表:

目标表:

项目和时间在行列的顺序是互换的,这个肯定会涉及到转置功能。 我们看2种解法:

(一) 通过函数分割后转置合并。

我们看一个新函数Table.Partition。

代码语言:javascript
代码运行次数:0
运行
复制
Table.Partition(table as table, column as text, group as number, hash as function) as list

位置

参数

描述

第1参数

Table

需要操作的表

第2参数

Text

列名,文本形式

第3参数

Group

分组的数量,数字格式

第4参数

Hash

应用以获取哈希值的函数

解释: 此作用主要是把表根据哈希值及制定分组数进行分割成单个table的列表。

1. 添加索引列并整除
2. 转换成3个独立的表,使用到Table.Partition函数
代码语言:javascript
代码运行次数:0
运行
复制
Table.Partition(被用整数除的列,"索引",3, each _)

解释: 被用整数除的列代表之前的过程表; 索引代表根据内容进行的分组列名,需要文本格式,所以用""; 3代表分组的数量; each _代表之前的整个表。

这样我们得到3个独立的表。因为返回的结果是list格式,所以我们还需要转成Table格式。

3. 把这3个table里面的行列进行转置。
代码语言:javascript
代码运行次数:0
运行
复制
Table.AddColumn(转换为表, "自定义", each 
                          Table.Transpose(
                                    Table.RemoveColumns([Column1],"索引")
                                          )
               )

因为索引列我们已经不需要了,所以在转置前把索引列给去除,然后在进行转置。

4. 对每一个表用表格里的第一列的第一个值作为表的说明。
代码语言:javascript
代码运行次数:0
运行
复制
Table.AddColumn(删除的其他列, "自定义.1", each [自定义][Column1]{0})

添加列并取自定义表的Column1列的第1行值作为表的说明。

5. 最后展开后筛选,调整,重命名标题即可。

(二) 使用自定义函数

之前我们有做过一个关于多列数据组合的自定义函数。

Power Query中如何把多列数据合并?

Power Query中如何把多列数据合并?升级篇

1. 先进行转置
2. 使用自定义函数进行多列合并
代码语言:javascript
代码运行次数:0
运行
复制
批量多列合并(转置表,Table.ColumnCount(转置表)/7,7,0)

解释: 第1参数代表需要处理的表,转置表代表上个过程的表 第2参数代表是循环次数,这里实际转换是3,代表3组数据进行合并,我们这里使用了函数可以相对自动化的获取循环次数。 第3参数是多少列作为一组进行转换,这里是7个列进行。 第4参数是代表是否需要固定列,这不存在固定列,所以用0代表。

3. 添加自定义列标注数据归属
代码语言:javascript
代码运行次数:0
运行
复制
try if Text.Contains([Column1],"班") then [Column1] else null otherwise null

解释: 因为归属的字段里面都有个"班"字,所以以这个为条件进行判断,但是第1列当中既有文本格式,又有日期格式,所以直接使用文本函数,在判断日期的时候会出错,所以这里使用了try...otherwise...函数来进行处理。

4. 最后通过提升标题,筛选数据,重命名列名等整理数据即可
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据技巧 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (一) 通过函数分割后转置合并。
    • 1. 添加索引列并整除
    • 2. 转换成3个独立的表,使用到Table.Partition函数
    • 3. 把这3个table里面的行列进行转置。
    • 4. 对每一个表用表格里的第一列的第一个值作为表的说明。
    • 5. 最后展开后筛选,调整,重命名标题即可。
  • (二) 使用自定义函数
    • 1. 先进行转置
    • 2. 使用自定义函数进行多列合并
    • 3. 添加自定义列标注数据归属
    • 4. 最后通过提升标题,筛选数据,重命名列名等整理数据即可
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档