R - 如何制作冲积图
R - How to make a Alluvial diagram
我想使用 library(alluvial)
制作冲积图
我的数据框如下所示:
> id Diagnose 1 Diagnose 2 Diagnose 3
1 Cancer cancer cancer
2 Headache Breastcancer Breastcancer
3 Breastcancer Breastcancer cancer
4 Cancer cancer cancer
5 Cancer Breastcancer Breastcancer
6 Cancer Breastcancer cancer
等
数据框显示了医生给出的诊断名称(只是示例,不是真正的诊断)。
因此对于患者 id 1,第一个诊断是癌症,第二个也是癌症,最后一个也是癌症。对于 2 号患者,第一个诊断是头痛,然后患者被诊断为乳腺癌,依此类推。
我想制作一张冲积图,显示每位患者的诊断进展。并收集首次诊断为 "cancer" 的所有患者,依此类推。
我怎样才能制作一个冲积图,看起来像这样:
[![在此处输入图片描述][1]][1]
您应该首先处理您的数据,然后使用 alluvial
函数:
library(dplyr) # to manipulate data
library(alluvial)
allu <- data %>%
group_by(Diagnose1, Diagnose2, Diagnose3) %>% # grouping
summarise(Freq = n()) # adding frequencies
# here the plot
alluvial(allu[,1:3], freq=allu$Freq)
有数据(我删除了列名中的 space):
data <- read.table(text = "id Diagnose1 Diagnose2 Diagnose3
1 Cancer cancer cancer
2 Headache Breastcancer Breastcancer
3 Breastcancer Breastcancer cancer
4 Cancer cancer cancer
5 Cancer Breastcancer Breastcancer
6 Cancer Breastcancer cancer ",header = T)
编辑
如果你有NA,可以尝试这样替换:
# first, you should use the option stringsAsFactor = F in the data, in my case
data <- read.table(text = "id Diagnose1 Diagnose2 Diagnose3
1 Cancer cancer cancer
2 Headache Breastcancer Breastcancer
3 Breastcancer Breastcancer cancer
4 Cancer NA cancer
5 Cancer Breastcancer Breastcancer
6 Cancer Breastcancer cancer ",header = T, stringsAsFactor = F )
# second, replace them with something you like:
data[is.na(data)] <- 'nothing'
最后,你可以绘制绘图,它会出现 choosen 替换 NAs 的词。
我想使用 library(alluvial)
我的数据框如下所示:
> id Diagnose 1 Diagnose 2 Diagnose 3
1 Cancer cancer cancer
2 Headache Breastcancer Breastcancer
3 Breastcancer Breastcancer cancer
4 Cancer cancer cancer
5 Cancer Breastcancer Breastcancer
6 Cancer Breastcancer cancer
等
数据框显示了医生给出的诊断名称(只是示例,不是真正的诊断)。
因此对于患者 id 1,第一个诊断是癌症,第二个也是癌症,最后一个也是癌症。对于 2 号患者,第一个诊断是头痛,然后患者被诊断为乳腺癌,依此类推。
我想制作一张冲积图,显示每位患者的诊断进展。并收集首次诊断为 "cancer" 的所有患者,依此类推。 我怎样才能制作一个冲积图,看起来像这样: [![在此处输入图片描述][1]][1]
您应该首先处理您的数据,然后使用 alluvial
函数:
library(dplyr) # to manipulate data
library(alluvial)
allu <- data %>%
group_by(Diagnose1, Diagnose2, Diagnose3) %>% # grouping
summarise(Freq = n()) # adding frequencies
# here the plot
alluvial(allu[,1:3], freq=allu$Freq)
有数据(我删除了列名中的 space):
data <- read.table(text = "id Diagnose1 Diagnose2 Diagnose3
1 Cancer cancer cancer
2 Headache Breastcancer Breastcancer
3 Breastcancer Breastcancer cancer
4 Cancer cancer cancer
5 Cancer Breastcancer Breastcancer
6 Cancer Breastcancer cancer ",header = T)
编辑
如果你有NA,可以尝试这样替换:
# first, you should use the option stringsAsFactor = F in the data, in my case
data <- read.table(text = "id Diagnose1 Diagnose2 Diagnose3
1 Cancer cancer cancer
2 Headache Breastcancer Breastcancer
3 Breastcancer Breastcancer cancer
4 Cancer NA cancer
5 Cancer Breastcancer Breastcancer
6 Cancer Breastcancer cancer ",header = T, stringsAsFactor = F )
# second, replace them with something you like:
data[is.na(data)] <- 'nothing'
最后,你可以绘制绘图,它会出现 choosen 替换 NAs 的词。