gpt4 book ai didi

r - 多列计数数据的条形图

转载 作者:行者123 更新时间:2023-12-01 23:25:52 24 4
gpt4 key购买 nike

我有一个看起来像这样的数据框:

包含数据的列:

Sex     Var1  Var2   Var3
Male Yes No Yes
Female No Yes No
Male No No Yes
Female Yes Yes No

我想为 X 轴上的每个变量(一个用于男性,一个用于女性)和 Y 轴上的"is"计数创建一个条形图,但我真的不知道该怎么做。任何帮助将不胜感激。

最佳答案

这是一个带有 base R 的。在仅选择“Var”列的逻辑矩阵上使用 rowSums 获取"is"的计数,然后按“性别”进行分组以使用 rowsum 按性别汇总计数>) 并使用 barplot

barplot(t(rowsum(rowSums(df1[-1] == 'Yes'), df1$Sex)))

或者如果我们需要按条形图分组,将其更改为

barplot(t(rowsum(+(df1[-1] == 'Yes'), df1$Sex)), beside = TRUE,
legend = TRUE, col = c('red', 'blue', 'green'))

或者如果我们更喜欢 ggplot,使用 pivot_longer(来自 tidyr) reshape 为“长”格式,得到一个 group_by, summarise 返回"is"的计数并使用 ggplot

library(dplyr)
library(tidyr)
library(ggplot2)
df1 %>%
pivot_longer(cols = -Sex) %>%
group_by(Sex) %>%
summarise(n = sum(value == 'Yes')) %>%
ggplot(aes(x = Sex, y = n)) +
geom_col()

对于每个 'Var' 的条形图

df1 %>%
pivot_longer(cols = -Sex) %>%
group_by(Sex, name) %>%
summarise(n = sum(value == 'Yes'), .groups = 'drop') %>%
ggplot(aes(x = Sex, y = n, fill = name)) +
geom_col(position = 'dodge')

-输出

enter image description here

数据

df1 <- structure(list(Sex = c("Male", "Female", "Male", "Female"), 
Var1 = c("Yes",
"No", "No", "Yes"), Var2 = c("No", "Yes", "No", "Yes"), Var3 = c("Yes",
"No", "Yes", "No")), class = "data.frame", row.names = c(NA,
-4L))

关于r - 多列计数数据的条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67233995/

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