дискретные переменные барплота для 2 групп - PullRequest
0 голосов
/ 30 августа 2018

У меня есть фрейм данных со столбцом 'Y' или 'N' для 2 групп, например:

drug<-c("Y","Y","N","Y","Y","Y","N","N","N","N","N","Y","Y","Y","N","N")
   group<-c(0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1)                 
df<-data.frame(drug,group)

Я хочу сделать столбцы «Y» / «N» для обеих групп, где две группы расположены рядом друг с другом. Я пробовал разные вещи с ggbarplot и получал странные сюжеты

ggbarplot(my_matches, x = "group", y = "drug", 
                 color = "group", palette = c("#00AFBB", "#FC4E07"))

и пытались составить таблицы и нанести их на график, например

counts0<-df[which(df$group==0),]
counts1<-df[which(df$group==1),] 

grp0<-table(counts0$drug)
grp1<-table(counts1$drug)
s<- as.data.frame(t(rbind(grp0,grp1)))

barplot(s$grp0, s$grp1,beside=T)

Как вы можете сказать, я новичок и сводил меня с ума, пытаясь решить эту проблему. Пожалуйста, помогите!

1 Ответ

0 голосов
/ 30 августа 2018

Во-первых, нет необходимости создавать векторы в виде столбцов фрейма данных, а df не является хорошим именем переменной (есть функция с тем же именем). Создайте свой фрейм данных за один шаг, как это:

mydata <- data.frame(drug  = c("Y","Y","N","Y","Y","Y","N","N","N","N","N","Y","Y","Y","N","N"),
                     group = c(0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1))

Второе: если вы работаете с фреймами данных, стоит изучить dplyr . Так что установите его вместе с ggplot2, затем загрузите:

library(dplyr)
library(ggplot2)

Теперь мы можем считать Y / N по группе:

mydata %>% 
  count(group, drug)

# A tibble: 4 x 3
  group drug      n
  <dbl> <fct> <int>
1     0 N         3
2     0 Y         5
3     1 N         5
4     1 Y         3

И график имеет значение по сравнению с группой. Нам нужно преобразовать группы в факторы, поскольку группа является категориальной переменной:

mydata %>% 
  count(group, drug) %>% 
  mutate(group = factor(group)) %>% 
  ggplot(aes(group, n)) + 
  geom_col(aes(fill = drug))

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...