R - Как сделать аллювиальную диаграмму - PullRequest
0 голосов
/ 04 января 2019

Я хочу создать аллювиальную диаграмму, используя 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            

и т. Д.

В кадре данных указано название диагноза, поставленного врачом (только примеры, а не реальный диагноз).

Итак, для пациента с номером 1 первый диагноз - рак, второй - также раки последний тоже рак.Для пациента № 2 первым диагнозом является головная боль, затем пациенту ставят диагноз «Рак молочной железы» и т. Д.

Я хочу сделать аллювиальную диаграмму, которая показывает развитие диагноза каждого пациента.И собирает всех пациентов, у которых «рак» в качестве первого диагноза и так далее.Как я могу сделать аллювиальную диаграмму, похожую на эту: [! [Введите описание изображения здесь] [1]] [1]

1 Ответ

0 голосов
/ 04 января 2019

Сначала вы должны работать с вашими данными, а затем использовать функцию 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)

enter image description here


с данными (Iубрал пробел в именах столбцов):

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'

Наконец, вы можете построить график, и появится слово, выбранное для замены NA.

...