Я пытаюсь преодолеть это.Не могу получить дальше.
У меня есть фрейм данных с факторными и числовыми переменными.При этом отображаются первые несколько строк и столбцов.
# A tibble: 6 x 5
cluster SEV_D SEV_M OBS PAN
<int> <dbl> <dbl> <fct> <fct>
1 1 5 1 0 1
2 2 6 1 0 0
3 1 5 1 0 1
4 2 4 2 0 0
5 1 4 1 1 1
6 1 4 2 1 0
cluster=as.factor(c(1,2,1,2,1,1))
SEV_D=as.numeric(c(5,6,5,4,4,4))
SEV_M=as.numeric(c(1,1,1,2,1,2))
OBS=as.factor(c(0,0,0,0,1,1))
PAN=as.factor(c(1,0,1,0,1,0))
data<-data.frame(cluster,SEV_D,SEV_M,OBS,PAN)
Я разделяю фрейм данных таким образом, на числовые и факторные переменные, сохраняя «кластер» в обоих подмножествах, так как он мне нужен для группировки.
data_fact <- data[, sapply(data, class) == 'factor']
data_cont <- data[, sapply(data, class) == 'numeric' | names(data)
== "cluster"]
Два следующих фрагмента кода дадут нужные мне графики.
data_fact %>% group_by(cluster,OBS)%>%summarise(total.count=n()) %>%
ggplot(., aes(x=cluster, y=total.count, fill=OBS)) +
geom_bar(position = 'dodge', stat='identity') +
geom_text(aes(label=total.count),
position=position_dodge(width=0.9), vjust=-0.2)
data_cont %>% group_by(cluster) %>% dplyr::summarise(mean =
mean(SEV_D), sd = sd(SEV_D)) %>%
ggplot(.,aes(x=cluster,y=mean))+geom_bar(position=position_dodge(),
stat="identity",colour="black",size=.3)+geom_errorbar(aes(ymin=mean-
sd, ymax=mean+sd),size=.3,width=.4,position=position_dodge(.4)) +
ggtitle("SEV_D")
Моя цель состоит в том, чтобы создать столько графиков, сколько переменных в кадре данных, зацикливаясь на столбцах, и хранить такие графикив одном листе.
Моя попытка была
col<-names(data_fact)[!names(data_fact)%in%"cluster"]
for(i in col) {
data_fact %>% group_by(cluster,i)%>%summarise(total.count=n()) %>%
ggplot(., aes(x=cluster, y=total.count, fill=i)) + geom_bar(position
= 'dodge', stat='identity') + geom_text(aes(label=total.count),
position=position_dodge(width=0.9), vjust=-0.2)
}
Но выдает эту ошибку:
Ошибка в grouped_df_impl (данные, unname (переменные), drop): столбецi
неизвестно
Кроме того, этот код, я боюсь, не будет отображать все графики на одном листе.Любая помощь будет высоко ценится !!!