前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何对不同行,同列名进行多维转一维?

如何对不同行,同列名进行多维转一维?

作者头像
逍遥之
发布2020-03-24 15:47:51
1.2K0
发布2020-03-24 15:47:51
举报
文章被收录于专栏:数据技巧数据技巧

之前的案例都是列数及行数相同,那如果是不同的情况下,该如何处理呢?

原表:

目标表:

此时我们可以通过另外一个分组函数来进行处理。Table.Group

代码语言:javascript
复制
Table.Group(table as table,   //需要操作的表
            key as any,       //分组关键词
            aggregatedColumns as list,   //分组后的新列名及计算公式
            optional groupKind as nullable number,  //全局分组或者是局部分组
            optional comparer as nullable function) as table  //局部分组使用到的函数
  • 第一个必填参数:我们很好理解,是从哪个表进行操作。
  • 第二个必填参数:是根据哪列数据进行分组,可以为文本格式及列表格式。参数必须要填写,但是可以是空列表{},只有在不需要值来计算时可以使用。同时如果是列表格式,则第4参数默认为全局分组。
  • 第三个必填参数:怎么进行分组操作,是一个列表格式。
  • 第四个可选参数:1=全局分组;0=局部分组(分组到下一条不等值为止)
  • 第五个可选参数:目前所知是有2个参数组成的函数(x,y)其中X为每次分组后的第一行;Y为X当前行及下面的每一行。通常用(x,y)=>Number.From()固定格式来处理所判断后的条件值。

(一) 通过增加列来判断分组的依据。

代码语言:javascript
复制
if Text.Contains([列1],"班") then 1 else null

解释: 判断列1是否包含班的关键词,如果有就标记1,没有就空着。主要是为了之后的分组作为依据。

(二) 根据分组依据分割成各个表格

代码语言:javascript
复制
Table.Group(已添加自定义, 
            "自定义", 
           {"计数", each _},
            0,
           (x,y) => Number.From(y=1)
           )

解释: 判断从1开始直到下一个为1之前的作为一个表来进行分组。

(三) 对分组后的表进行转置

可以通过添加列,也可以在之前分组的时候进行处理。

代码语言:javascript
复制
Table.Group(已添加自定义, 
           "自定义",              //不能是列表格式,列表格式局部分组就无意义
           {"计数", each Table.Transpose(_)},  //转置表并显示增加的列名
           0,                     //局部分组
           (x,y)=>Number.From(y=1)
            )
Table.AddColumn(分组的行, "自定义.1", each Table.Transpose([计数]))

(四) 保留所需要的数据并展开

(五) 最后添加班级并向下填充以及重命名标题及筛选后得出最后结果。

这里留个疑问,因为目前来看,列名都是一一对应的,如果列名不一致的话,如何进行处理呢?可以先行试着操作下。

原表:

目标表:

案例模拟文件下载http://gofile.me/4KHV7/SUo5ywXxC 试试看能不能得出效果呢? 如果用之前的方式,我们不能把相同项目归类在一起,得到的错误结果是这样的。

如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (一) 通过增加列来判断分组的依据。
  • (二) 根据分组依据分割成各个表格
  • (三) 对分组后的表进行转置
  • (四) 保留所需要的数据并展开
  • (五) 最后添加班级并向下填充以及重命名标题及筛选后得出最后结果。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档