首页 > 解决方案 > R:绘制数据帧中对组合的百分比

问题描述

我有以下内容dataframe

df <-read.table(header=TRUE, text="id Medication
                1 A
                1 B
                1 C
                2 A
                2 B
                3 A
                3 A
                3 B
                4 B
                4 C")

我想在条形图中绘制每份药物的个人百分比:A&B、B&C 和 C&D。在此示例中,它将是:

A&B = 0.75, B&C = 0.5, and A&C = 0.25. 

标签: rdataframeplot

解决方案


您可以使用combn来计算每个组合的比率。

data <- do.call(rbind, combn(unique(df$Medication), 2, function(x) 
  data.frame(Med_comb = paste(x, collapse = ' & '), 
             value = mean(tapply(df$Medication, df$id, function(y) all(x %in% y)))), 
  simplify = FALSE))

data
#  Med_comb value
#1    A & B  0.75
#2    A & C  0.25
#3    B & C  0.50

对于绘图,您可以使用ggplot2.

library(ggplot2)
ggplot(data, aes(Med_comb, value)) + geom_col()

在此处输入图像描述


推荐阅读