R boxplot子集列基于另一列中的值
R boxplot Subset column based on value in another column
大搜索后我需要一些帮助!
我需要根据另一列数据对一列进行子集化。
我的数据集如下所示:
Term
Name
True
Result
T1
Name1
True
4
T2
Name2
False
6
T3
Name3
True
5.5
T3
Name4
False
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 轴显示箱线图的 T1 和 T3:
ggplot(dataset, aes(x=Term, y=Result)) +
geom_boxplot()
根据按 'Term' 分组的 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()
Base R 1 liner:
boxplot(Result~Term, data = dataset, subset = Term %in% unique(Term[TRUE.]))
大搜索后我需要一些帮助!
我需要根据另一列数据对一列进行子集化。
我的数据集如下所示:
Term | Name | True | Result |
---|---|---|---|
T1 | Name1 | True | 4 |
T2 | Name2 | False | 6 |
T3 | Name3 | True | 5.5 |
T3 | Name4 | False | 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 轴显示箱线图的 T1 和 T3:
ggplot(dataset, aes(x=Term, y=Result)) +
geom_boxplot()
根据按 'Term' 分组的 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()
Base R 1 liner:
boxplot(Result~Term, data = dataset, subset = Term %in% unique(Term[TRUE.]))