如何根据R中出现的次数创建一个颜色编码的比较表?

k7fdbhmy  于 2022-12-30  发布在  其他
关注(0)|答案(1)|浏览(159)

我比较了两个不同的评分员对850名患者的评分,评分可以是从1到9的整数。我的数据框由2列(两个评分员)和850行(每个患者一行,评分从1到9)组成。
使用table()函数,我创建了一个表来比较两个评估者给出的值

table(df$score_assessor1, df$score_assessor2)

我在Excel中重新创建了该表:

我希望有相同的表,但有一个颜色代码的出现次数(例如白色如果= 0,黄色如果0〈x〈11,橙色如果11〈x〈30等...)
有人能帮我画出这样一张表吗?
先谢谢你。

4ktjp1zp

4ktjp1zp1#

您可以使用dplyr::count()和ggplot2创建一个简单的热图:

library(dplyr)
library(ggplot2)

df %>% 
  count(
    score_assessor1 = factor(score_assessor1, levels = 1:9), 
    score_assessor2 = factor(score_assessor2, levels = 1:9),
    .drop = FALSE
  ) %>% 
  ggplot(aes(score_assessor1, score_assessor2)) +
  geom_tile(aes(fill = n)) +
  geom_text(aes(label = n)) +
  scale_fill_distiller(palette = "YlOrRd", direction = 1) +
  coord_cartesian(expand = FALSE)

(转换为因子和count()中的.drop = FALSE使无计数的单元格显示为0,而不是NA。)

  • 示例数据:*
library(scales)
set.seed(13)

df <- data.frame(score_assessor1 = rnorm(300)) %>% 
  mutate(
    score_assessor2 = score_assessor1 + rnorm(300) * 5,
    across(everything(), ~ round(rescale(.x, c(1, 9))))
  )

相关问题