在SPSS/Excel中按类别合并多列争议变量至单列并生成类别列
我来帮你搞定这个数据重塑的需求!不管用SPSS还是Excel,都有简单的方法实现,先拿个示例数据说明下:
当前宽格式数据:
ID 类别A 类别B 类别C 1 争议1 争议4 争议7 2 争议2 争议5 争议8 3 争议3 争议6 争议9 期望长格式数据:
ID 类别名称 争议变量 1 类别A 争议1 1 类别B 争议4 1 类别C 争议7 2 类别A 争议2 2 类别B 争议5 2 类别C 争议8 3 类别A 争议3 3 类别B 争议6 3 类别C 争议9
下面分工具给你一步步说操作方法:
用Excel实现
最省心的方法是用Power Query(Get & Transform),不用写复杂公式:
- 第一步:选中你的数据区域(包括表头),点击「数据」选项卡 → 「从表格/区域」,弹出对话框时确认勾选「我的表格有标题」,进入Power Query编辑器。
- 第二步:选中所有需要合并的争议类别列(比如示例里的「类别A」「类别B」「类别C」),点击「转换」选项卡 → 「逆透视列」→ 「逆透视其他列」(如果有不需要转换的列比如「ID」,可以先选中这些列,再选「逆透视其他列」,这样就只会转剩下的列)。
- 第三步:这时候你会得到「属性」和「值」两列,右键重命名成你想要的名字,比如「类别名称」和「争议变量」。
- 第四步:点击「主页」选项卡 → 「关闭并上载」,数据就自动变成你要的长格式啦!
用SPSS实现
SPSS有菜单操作和语法两种方式,都很简单:
菜单操作
- 打开数据后,点击顶部菜单「数据」→ 「重塑」→ 「重塑为长格式」。
- 在弹出的对话框里:
- 「要转置的变量」:把所有争议类别列选进去;
- 「创建索引变量」:给新的类别列起名(比如「类别名称」),然后在「索引标签」里选「变量名」(这样原列名就会变成类别值);
- 「结果变量」:给合并后的争议变量列起名(比如「争议变量」);
- 点击「确定」,数据直接转成目标格式。
语法操作(适合批量处理或重复操作)
如果需要重复做相同的转换,写语法更高效。比如对应上面的示例数据,语法如下:
VARSTOCASES /MAKE 争议变量 FROM 类别A 类别B 类别C /INDEX=类别名称(类别A 类别B 类别C) /KEEP=ID /* 这里列上所有不需要转换的列,比如ID、姓名等 */ /NULL=DROP. /* 如果要保留空值,把DROP改成KEEP即可 */
把语法里的变量名换成你实际的列名,粘贴到SPSS的语法编辑器里运行就行。
这样不管用哪个工具,都能轻松把宽格式数据转成你需要的长格式啦~
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

