gpt4 book ai didi

r - 基于 TRUE/FALSE 变量列的箱线图

转载 作者:行者123 更新时间:2023-12-04 10:27:38 25 4
gpt4 key购买 nike

我有可以粗略复制的数据

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))

我如何在箱线图上绘制它?我要找的是 var1 , var2var3在 x 轴和 val 上在 y 轴上,即 var1 的盒须将仅包含在 var1 中具有 1 的观察值柱子。

我试过了
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 个看起来完全相同的箱线图。

我哪里错了?

最佳答案

在基础 R 我们可以做

boxplot(sapply(df[-1], function(x) df$val[as.logical(x)]))

enter image description here

或使用 ggplot2
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))

enter image description here

数据
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))

关于r - 基于 TRUE/FALSE 变量列的箱线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60564637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com