如何将同名的多个Dummy变量合并为单一变量?
问题描述
使用fastDummies工具处理以下多列数据生成哑变量:
| type 1 | type 2 |
|---|---|
| fire | leaf |
| leaf | fire |
生成的哑变量列如下:
| type 1$fire | type$leaf | type 2$fire | type2$leaf |
|---|---|---|---|
| 1 | 0 | 0 | 1 |
| 0 | 1 | 1 | 0 |
移除列名前缀后得到如下结构:
| fire | leaf | fire | leaf |
|---|---|---|---|
| 1 | 0 | 0 | 1 |
| 0 | 1 | 1 | 0 |
需要将同名列合并,得到以下结果:
| fire | leaf |
|---|---|
| 1 | 1 |
| 1 | 1 |
解决方案
基于R语言,可通过按列名分组求和的方式实现同名列合并,以下是两种可行方法:
方法一:使用dplyr包分组处理
假设处理后的数据集名为df,代码如下:
library(dplyr) df_merged <- df %>% summarise(across(everything(), sum), .by = names(.))
方法二:使用rowsum转置处理
df_merged <- as.data.frame(t(rowsum(t(df), group = colnames(df))))
两种方法都会将同名列的对应行值相加,最终实现“只要某行在任意同名列为1,合并后值为1”的效果,匹配目标输出。
内容的提问来源于stack exchange,提问作者stefano panero
相关产品推荐
相关产品推荐

