0

我有一个包含三个分类变量的数据框:

  • 分类1:“1”、“2”、“3”、“4”
  • 分类2:“低”、“中”、“高”
  • 生存:“1”(活着),“2”(死了)

数据框由多行组成,每个人一行。前 20 行:

classification1 <- c(4, 3, 1, 2, 3, 1, 2, 2, 2, 2, 1, 1, 4, 2, 2, 1, 2, 1, 3, 2)
classification2 <- c("Medium", "Medium", "Low", "High", "High", "Low", "Medium", "Medium", "High", "Low", "Low", "Low", "High", "High", "Medium", "Low", "Medium", "Low", "Medium", "Medium")
survival <- c(2, 1, 1, 1, 2, 1, 1, 2, 2, 1, 1, 1, 2, 2, 1, 2, 2, 1, 2, 1)
df <- data.frame(classification1, classification2, survival)

我想用ggalluvialwithggplot2来建造这样的冲积地块,但我不知道怎么做!

冲积地块

以下代码返回错误 ( Error in FUN(X[[i]], ...) : objet 'Freq' introuvable ),因为我不知道什么是“频率”:

ggplot(data = df, aes(axis1 = classification1, axis2 = classification2, y = Freq)) +
  scale_x_discrete(limits = c("classification1", "classification2"), expand = c(.2, .05)) +
  geom_alluvium(aes(fill = survival)) +
  geom_stratum() +
  geom_text(stat = "stratum", aes(label = after_stat(stratum)))

关于如何格式化我的数据框以适应的任何线索ggaluvial

4

1 回答 1

1

dplyr::count您可以使用例如添加具有频率的列来聚合您的数据集:

library(ggalluvial)
library(dplyr)

df <- df %>% 
  count(classification1, classification2, survival, name = "Freq")

ggplot(data = df, aes(axis1 = classification1, axis2 = classification2, y = Freq)) +
  scale_x_discrete(limits = c("classification1", "classification2"), expand = c(.2, .05)) +
  geom_alluvium(aes(fill = factor(survival))) +
  geom_stratum() +
  geom_text(stat = "stratum", aes(label = after_stat(stratum)))

于 2021-10-20T20:30:56.657 回答