如何将data.frame两列按行合并为新数据框单列并绘制ggplot2箱线图?
R数据框宽转长与箱线图绘制方案
你可以通过宽格式转长格式的操作将原始数据框转换为目标结构,进而用ggplot2绘制单一箱线图,具体步骤如下:
原始数据与目标结构
原始数据框:
df <- data.frame(A = c("Year 1", "Year 1", "Year 2", "Year 2"), B=c(1,2,3,4), C=c(5,6,7,8))
目标数据框:
df.desired <- data.frame(A = rep(c("Year 1", "Year 1", "Year 2", "Year 2"),2), D=c(1,2,3,4,5,6,7,8))
数据转换方法
使用tidyr包的pivot_longer()函数快速完成宽转长,将B、C两列合并为单列D,同时保留A列的分组信息:
library(tidyr) df_long <- pivot_longer(df, cols = c(B, C), names_to = NULL, values_to = "D")
cols = c(B, C):指定需要转换的列names_to = NULL:不需要保留原列名(B/C)values_to = "D":新列命名为D
转换后的df_long与df.desired完全一致。
绘制箱线图
用ggplot2基于转换后的长格式数据绘制箱线图:
library(ggplot2) ggplot(df_long, aes(x = A, y = D)) + geom_boxplot()
内容的提问来源于stack exchange,提问作者nouse
相关产品推荐
相关产品推荐

