如何在 R 中为不相等的组大小创建百分比堆栈图?
How to create a percentage stack plot for unequal group size in R?
我有 2 个样本量不相等的组,即“A”和“B”。 “A”的大小为 19,“B”的大小为 15,数据的总大小为 34。他们有一个名为“Drug1”的分类变量,用于指示 A 组和 B 组有多少人服用该药物,因此值“Drug1”变量是 YES 和 NO。
我如何创建一个百分比堆栈图,我可以在其中显示两个组以及每个服用药物和不服用药物的人数(以相互叠加的百分比表示)?我还想在栏中注释百分比值
这是输入的示例:
dat1<- data.frame(id=1:n,
Group=sample(c("A", "B"), 6, replace = TRUE) ,
Drug1=sample(c("Yes", "No"), 6, replace = TRUE))
通过将两个变量转换为因子(例如 df$Drug1 = as.factor(df$Drug1)
)并使用基本 plot()
函数将它们相互绘制,可以轻松获得堆叠的百分比条形图:
plot(df$Group,df$Drug1,xlab="Group of Participand",ylab="Drug taken")
我想这就是你想要的:
library(ggplot2)
dataset <- data.frame(
Groups = as.factor(sample(c("A", "B"), 30, replace = T)),
Drug_1 = as.factor(sample(c("Yes", "No"), 30, replace = T))
)
df_tbl <- table(dataset)
df_tbl <- round(100 * prop.table(df_tbl, margin = 1), 2)
df_tbl <- as.data.frame(df_tbl)
ggplot(df_tbl, aes(fill = Drug_1, y = Freq, x = Groups)) +
geom_bar(position = "stack", stat = "identity") +
labs(y = "Percent") +
geom_text(aes(label = Freq), position = "stack", vjust = 2)
我有 2 个样本量不相等的组,即“A”和“B”。 “A”的大小为 19,“B”的大小为 15,数据的总大小为 34。他们有一个名为“Drug1”的分类变量,用于指示 A 组和 B 组有多少人服用该药物,因此值“Drug1”变量是 YES 和 NO。
我如何创建一个百分比堆栈图,我可以在其中显示两个组以及每个服用药物和不服用药物的人数(以相互叠加的百分比表示)?我还想在栏中注释百分比值
这是输入的示例:
dat1<- data.frame(id=1:n,
Group=sample(c("A", "B"), 6, replace = TRUE) ,
Drug1=sample(c("Yes", "No"), 6, replace = TRUE))
通过将两个变量转换为因子(例如 df$Drug1 = as.factor(df$Drug1)
)并使用基本 plot()
函数将它们相互绘制,可以轻松获得堆叠的百分比条形图:
plot(df$Group,df$Drug1,xlab="Group of Participand",ylab="Drug taken")
我想这就是你想要的:
library(ggplot2)
dataset <- data.frame(
Groups = as.factor(sample(c("A", "B"), 30, replace = T)),
Drug_1 = as.factor(sample(c("Yes", "No"), 30, replace = T))
)
df_tbl <- table(dataset)
df_tbl <- round(100 * prop.table(df_tbl, margin = 1), 2)
df_tbl <- as.data.frame(df_tbl)
ggplot(df_tbl, aes(fill = Drug_1, y = Freq, x = Groups)) +
geom_bar(position = "stack", stat = "identity") +
labs(y = "Percent") +
geom_text(aes(label = Freq), position = "stack", vjust = 2)