如何解决如何在R中可视化多个类别变量与一个连续变量
说分类变量是
- 你抽烟->是/否
- 你喝酒->是/否
- Do_you_exercise->是/否
所有3个类别变量(Do_you_smoke,Do_you_drink,Do_you_exercise)具有2个类别“是”或“否”。现在,我想对一个连续变量说“收入” 一次可视化所有这些类别变量。我如何使用 R 可视化?
解决方法
最好包含一个可复制的数据示例,以便我们确保任何可能的解决方案都可以与您自己的数据结构一起使用。但是,根据您的描述,我们应该能够重新创建一个示例数据集,如下所示:
set.seed(69)
df <- data.frame(income = runif(1000,10000,100000))
df$smoke <- c("Yes","No")[1 + rbinom(1000,1,df$income/200000)]
df$drink <- sample(c("Yes","No"),1000,TRUE)
df$exercise <- c("No","Yes")[1 + rbinom(1000,df$income/100000)]
因此,我们的数据框包含四列:收入金额以及三个变量中的每个变量的“是”或“否”:
head(df)
#> income smoke drink exercise
#> 1 57767.86 Yes No Yes
#> 2 79192.70 Yes Yes Yes
#> 3 68132.37 No No No
#> 4 87873.44 Yes No No
#> 5 43199.45 Yes Yes No
#> 6 88188.83 No Yes Yes
要绘制此图,我们需要重塑数据。由于收入各不相同,因此无法在每个单独的收入水平上获得一定百分比,因此我们将不得不cut
将收入放入垃圾箱。让我们通过$ 10,000的垃圾箱完成此操作。然后,我们需要获取每个收入段中每个变量的“是”的比例。最后,我们要以长格式发布数据,以便每个bin中的每个比例都有自己的行,并根据其代表的三个类别变量中的哪个进行标记。然后,我们可以使用ggplot进行绘图。
我们需要加载一些库来帮助我们:
library(dplyr)
library(ggplot2)
library(scales)
library(tidyr)
现在我们的代码如下:
df %>%
mutate(income_bracket = cut(income,breaks = 1:10 * 10000)) %>%
group_by(income_bracket) %>%
summarise(exercise = length(which(exercise == "Yes"))/n(),smoke = length(which(smoke == "Yes"))/n(),drink = length(which(drink == "Yes"))/n()) %>%
mutate(income = paste(dollar(1:9 * 10000),dollar(2:10 * 10000),sep = " -\n")) %>%
select(-income_bracket) %>%
pivot_longer(1:3) %>%
ggplot(aes(x = income,y = value,group = name,colour = name)) +
geom_line(size = 1.3) +
geom_point(size = 3) +
scale_y_continuous(labels = percent,limits = c(0,1)) +
labs(title = "Percentage of activities by income",y = "Percent",x = "Income bracket",color = "Do you...")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。