繁体   English   中英

R boxplot 子集列基于另一列中的值

[英]R boxplot Subset column based on value in another column

在进行大搜索后,我需要一些帮助!

我需要根据另一列数据对一列进行子集化。

我的数据集如下所示:

学期 姓名 真的 结果
T1 名称1 真的 4
T2 名称2 错误的 6
T3 名称3 真的 5.5
T3 名称4 错误的 4.6
dataset <-
  structure(
    list(
      Term = c("T1", "T2", "T3", "T3"),
      Name = c("Name1",
               "Name2", "Name3", "Name4"),
      TRUE. = c(TRUE, FALSE, TRUE, FALSE),
      Result = c(4, 6, 5.5, 4.6)
    ),
    class = "data.frame",
    row.names = c(NA,-4L)
  )

我希望能够对箱线图进行子集化,以仅显示其中一条记录的值为 True 的术语。

例如,T1 的值为 True; T3 有两个值——一个是真,一个是假。 我希望 x 轴显示框 plot 的 T1 和 T3:

  ggplot(dataset, aes(x=Term, y=Result)) + 
  geom_boxplot()

基于按“术语”分组的any TRUE 值的存在对数据进行子集,并在ggplot中使用它

library(dplyr)
library(ggplot2)
dataset %>% 
    group_by(Term) %>% 
    filter(any(TRUE.)) %>%
    ggplot(aes(x = Term, y = Result)) + 
       geom_boxplot()

或在base R中使用subset

data_sub <-  subset(dataset, Term %in% unique(Term[TRUE.]))
ggplot(data_sub, aes(x=Term, y=Result)) + 
     geom_boxplot()

我想你可以在subset使用ave ,例如,

subset(
  dataset,
  ave(TRUE., Term, FUN = any)
) %>% ggplot(aes(x = Term, y = Result)) +
  geom_boxplot()

底座R 一个内胆:

boxplot(Result~Term, data = dataset, subset = Term %in% unique(Term[TRUE.]))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM