gpt4 book ai didi

r - 使用 count() 和 factor() 函数时,如何在 R ggplot 中使用动态声明的变量?

转载 作者:行者123 更新时间:2023-12-04 12:36:54 27 4
gpt4 key购买 nike

我想使用 ggplot 绘制一些相对频率数据以更有效的方式。
我有很多感兴趣的变量,并且想为每个变量绘制一个单独的条形图。以下是我当前感兴趣的一个变量的代码 Gender :

chart.gender <- data %>% 
count(Gender = factor(Gender)) %>%
mutate(Gender = fct_reorder(Gender,desc(n))) %>%
mutate(pct = prop.table(n)) %>%
ggplot(aes(x=Gender, y=n, fill=Gender)) +
geom_col()
这有效,但变量 Gender重复多次。由于我需要使用类似的代码为许多感兴趣的变量(性别、年龄、位置等)重复绘图,我想通过在顶部声明一次感兴趣的变量并在其余部分使用该声明的变量来简化这一点编码。直观地,类似于:
var <- "Gender"
chart.gender <- data %>%
count(var = factor(var)) %>%
mutate(var = fct_reorder(var,desc(n))) %>%
mutate(pct = prop.table(n)) %>%
ggplot(aes(x=var, y=n, fill=var)) +
geom_col()
这不会导致性别频率的三级因子计数图,而只是一个名为“性别”的列。我相信我看到了 为什么它不起作用,但我不知道它的解决方案:我希望 R 检索我存储在 var 中的变量名称,然后使用它来检索“数据”中该变量的数据。
通过一些研究,我发现了一些建议,例如使用 as.name(var) ,但似乎(至少)声明变量 var 存在问题。作为 count() 内的一个因素功能。
一些可重复的数据:
library(tidyverse)
library(ggplot2)

set.seed(1)
data <- data.frame(sample(c("Male", "Female", "Prefer not to say"),20,replace=TRUE))
colnames(data) <- c("Gender")
我在 R 中使用以下包: tidyverse , ggplot2

最佳答案

使用 .data代词用 var 对列进行子集化作为变量。

library(tidyverse)

var <- "Gender"
data %>%
count(var = factor(.data[[var]])) %>%
mutate(var = fct_reorder(var,desc(n))) %>%
mutate(pct = prop.table(n)) %>%
ggplot(aes(x=var, y=n, fill=var)) +
geom_col()
或者另一种方法是使用 sym!!
data %>% 
count(var = factor(!!sym(var))) %>%
mutate(var = fct_reorder(var,desc(n))) %>%
mutate(pct = prop.table(n)) %>%
ggplot(aes(x=var, y=n, fill=var)) +
geom_col()

关于r - 使用 count() 和 factor() 函数时,如何在 R ggplot 中使用动态声明的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63809162/

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