R语言如何将拆分为两列的分类变量合并为单个列
解决方法
你需要执行宽表转长表的操作,以下提供两种常用实现方案:
方法1:使用tidyverse的pivot_longer函数(推荐,适配后续ggplot绘图需求)
# 未安装包先执行:install.packages("tidyverse") library(tidyverse) data_long <- data %>% pivot_longer( cols = c(Active, Inactive), names_to = "Status", values_to = "Count" )
参数说明:
cols:指定需要合并的宽表列names_to:合并后存储原列名(即Active/Inactive)的新列名,这里设置为需求的Statusvalues_to:合并后存储对应计数值的新列名,这里命名为Count
方法2:基础R实现(无需安装额外包)
data_long <- reshape( data, idvar = c("Month", "Year"), varying = c("Active", "Inactive"), v.names = "Count", timevar = "Status", times = c("Active", "Inactive"), direction = "long" ) # 可选:重置行号 rownames(data_long) <- NULL
转换后的数据格式如下:
| Month | Year | Status | Count |
|---|---|---|---|
| Sep | 2021 | Active | 20 |
| Sep | 2021 | Inactive | 40 |
| Oct | 2021 | Active | 15 |
| Oct | 2021 | Inactive | 32 |
| Nov | 2021 | Active | 29 |
| Nov | 2021 | Inactive | 20 |
得到的长表可直接用于后续的可视化操作,Status列可以直接映射为分组、颜色或分面变量。
内容的提问来源于stack exchange,提问作者RL_Pug
相关产品推荐
相关产品推荐

