首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于真/假变量列的箱形图

基于真/假变量列的箱形图
EN

Stack Overflow用户
提问于 2020-03-06 21:02:04
回答 2查看 505关注 0票数 2

我有可以使用以下命令粗略复制的数据

代码语言:javascript
复制
n = 10
df = data.frame(
  val= rnorm(n), 
  var1 = rbinom(n, 1, 0.5),
  var2 = rbinom(n, 1, 0.5),
  var3 = rbinom(n, 1, 0.5))

我如何在箱形图上绘制这个?我正在寻找的是x轴上的var1var2var3以及y轴上的val,即var1的盒子和胡须将只包含在var1列中具有1的观察值。

我试过了

代码语言:javascript
复制
df2 = melt(df, id.vars = c('val'), 
           variable.name ='vars', value.name = "include")

ggplot(df2, aes(x = include, y = val)) + geom_boxplot(aes(fill = vars)

但是当我绘制这个的时候,我得到了3个看起来完全一样的箱形图。

我哪里错了?

EN

回答 2

Stack Overflow用户

发布于 2020-03-06 21:09:58

在基数R中,我们可以做

代码语言:javascript
复制
boxplot(sapply(df[-1], function(x) df$val[as.logical(x)]))

或者使用ggplot2

代码语言:javascript
复制
df.r <- do.call(rbind, lapply(names(df)[-1], function(x) 
  data.frame(x, y=df$val[as.logical(df[,x])])))

library(ggplot2)
ggplot(df.r, aes(x=x, y=y)) + geom_boxplot(aes(fill=y))

数据

代码语言:javascript
复制
df <- structure(list(val = c(1.37095844714667, -0.564698171396089, 
0.363128411337339, 0.63286260496104, 0.404268323140999, -0.106124516091484, 
1.51152199743894, -0.0946590384130976, 2.01842371387704, -0.062714099052421
), var1 = c(1L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 1L), var2 = c(1L, 
1L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 1L), var3 = c(0L, 0L, 0L, 1L, 
0L, 1L, 1L, 1L, 1L, 1L)), class = "data.frame", row.names = c(NA, 
-10L))
票数 2
EN

Stack Overflow用户

发布于 2020-03-06 21:30:30

这些框都是相同的,因为图形没有考虑include向量。这是由ggplotdata参数中的subset指令处理的。

代码语言:javascript
复制
library(ggplot2)

ggplot(subset(df2, include != 0), aes(vars, val)) +
  geom_boxplot()

数据创建代码。

我正在重新发布设置RNG种子的数据创建代码。

代码语言:javascript
复制
set.seed(1234)
n = 10
df = data.frame(
  val= rnorm(n), 
  var1 = rbinom(n, 1, 0.5),
  var2 = rbinom(n, 1, 0.5),
  var3 = rbinom(n, 1, 0.5))
df

df2 <- reshape2::melt(df, id.vars = c('val'), 
           variable.name ='vars', value.name = "include")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60564637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档