簡體   English   中英

如何在 R 中可視化多個分類變量與一個連續變量

[英]How to visualize multiple categorical variables vs one continuous variable in R

假設分類變量是,

  1. Do_you_smoke -> 是/否
  2. Do_you_drink -> 是/否
  3. 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, 1, 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...")

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM