Excel将表格文件由宽数据转为长数据的方法
本文介绍基于Excel软件的Power Query模块,实现表格数据由宽数据转为长数据的具体方法。
长数据和宽数据是数据分析中的2
种基本数据组织形式,二者在结构、用途、适用场景等方面各有特点。其中,宽数据 (Wide Format)以“横向扩展”为特征,每个独立个体(如一名患者、一家公司)独占一行,而该个体的多个观测值(如不同时间点的指标)则横向排列在不同列中。这种布局让数据一目了然,适合直接查看或制作报表,但涉及时间序列或多指标对比时,会显得冗余且不利于程序化分析。长数据 (Long Format)则采用“纵向堆叠”的结构,每一行仅记录一个观测值,通过新增分类列(如“时间点”“指标类型”)来区分不同条件下的数据。这种格式虽然增加行数、降低可读性,却更贴合统计建模和可视化工具的需求,尤其适合重复测量分析或绘制多变量趋势图。
在我们之前的文章R语言读取Excel表格数据并绘制多系列柱状图、条形图(https://fkxxgis.blog.csdn.net/article/details/128986301)中,就介绍过基于R语言实现宽数据与长数据的转换方法;而本文我们则介绍不用代码、直接在Excel内,实现宽数据与长数据的转换方式。
首先,已知我们有一个如下图所示的Excel表格,其目前的数据形式为宽数据;我们的需求就是将这一宽数据转为长数据。
转换的方式也很简单。首先,我们需要新建另一个Excel表格文件,并在“数据”一栏中,依次选择“获取数据”→“来自文件”→“从工作簿”,如下图所示。
随后,在弹出的窗口中,选择存放了前述宽数据的那个Excel表格文件,如下图所示。
接下来,在导航器中,首先选择宽数据所在的Sheet,此时在右侧就会出现数据的预览;接下来,点击右下角的“转换数据”按钮,如下图所示。
随后,即可出现如下图所示的Power Query编辑器界面。由于前述数据导入过程中,可能会存在问题,因此此时我们首先对数据做一下检查。比如有一种情况,就是在数据导入时,Excel可能会将原本宽数据的第一行(列名行)也当作导入数据的一行记录(相当于导入后的数据比之前多了1
行而少了列名);因为我这里没有遇到这个情况,所以这里就没记录这个问题的解决方法,如果大家遇到了这个问题,再搜索解决方法即可。
但是本文中,遇到了另一种问题:原本我的宽数据的第3
列是一个文本格式的列,其具有形如0010
的编号;而在上述导入过程中,这一列被Excel识别为了整数格式的列,也就导致将原本的0010
变为了10
,很显然这个是不正确的。
针对这种情况,我们就选中这一列,此时可以看到此列的数据格式确实被识别为了整数,如下图所示。
因此,将这一列修改为文本格式即可,如下图所示。
接下来,会弹出如下图所示的提示窗口,选择“替换当前转换”即可。
修改格式后,可以看到这一列的数据已经是正常的了,例如0010
这个值显示就是正确的了,如下图所示。
接下来,我们回归主题,开始进行宽数据向长数据的转换。转换的方式也很多,首先如果大家需要参与转换的列比较多,那就可以首先选中不需要转换的列,然后选择“转换”栏目中的“逆透视其他列”,如下图所示。
这样,就会将我们没有选中的其他列加以转换,如下图所示。可以看到,此时前三列(也就是公司、产品、产品编号等基本信息列)没有参与转换,而转换的是后面几列,也就是不同年份的销量。
同样的,我们还可以直接选中需要转换的列,那么此时选择“逆透视列”即可,如下图所示。
可以看到,上图中我们只选中了2021年销售额
这一列,因此逆透视后,只有这一年的销售量被转换了,如下图所示。
此外,在Power Query编辑器右侧,有一个应用的步骤模块,如下图所示。这里会记录数据导入过程、编辑过程中的操作,如果需要撤回操作,直接点击这里最新操作左侧的叉号即可。
如果数据已经处理完毕, 那么选择“文件”中的“关闭并上载”选项即可,如下图所示。
随后,即可看到导入、转换完毕的数据,已经出现在了当前的Excel表格文件中,如下图所示。
此外,对于基于Power Query编辑器导入数据的Excel表格,其右侧会出现如下图所示的“查询 & 连接”窗口,其中会记录数据导入情况。如果在上述操作中有数据导入错误,这里也会显示出来,所以大家也可以多多留意这个位置的信息,避免数据导入或转换错误。
至此,大功告成。
欢迎关注:疯狂学习GIS