#r
Вопрос:
Я пытаюсь построить несколько гистограмм в R-группировке по штатам (UF в Бразилии), потому что существует 27 штатов.
UFs <- unique(ENEM$SG_UF_RESIDENCIA)
View(UFs)
for(i in UFs){
hist(ENEM$NU_NOTA_MT, main = "Histograma Nota Matemática ENEM 2017 - 2019",
xlab = paste("UF: ", i), ylab = "Frequência", col = "#224e69")
}
Но когда я пытаюсь запустить этот код, ничего не происходит. Может ли кто-нибудь дать мне подсказку?
Ответ №1:
Я думаю, что вам нужно назначить i
for
циклу И указать R, что вы хотите построить несколько гистограмм одновременно (что делается с помощью par(mfrow = c( ,)
:
par(mfrow= c(2,length(unique(ENEM$SG_UF_RESIDENCIA))/2))
for(i in unique(ENEM$SG_UF_RESIDENCIA)){
hist(ENEM[ENEM$SG_UF_RESIDENCIA == i,]$NU_NOTA_MT)
}
Данные об игрушках:
ENEM <- data.frame(
SG_UF_RESIDENCIA = sample(LETTERS[1:6], 100, replace = TRUE),
NU_NOTA_MT = rnorm(100)
)
Ответ №2:
Тебе это может пригодиться by
.
op <- par(mfrow=c(5, 6), mar=c(4, 4, 2, 2) .1)
invisible(by(ENEM, ENEM$UFs, (x)
hist(x$NU_NOTA_MT, main='', xlab=paste("UF: ", x$UFs[1]),
ylab='Frequência', col='#224e69')))
par(op)
Данные:
set.seed(42)
ENEM <- data.frame(NU_NOTA_MT=rnorm(2600), UFs=rep(LETTERS[1:26], each=100))
Комментарии:
1. Занимаетесь какой-нибудь группировкой?
2. @ChrisRuehlemann Просто косметика, но я добавил новые данные об игрушках, чтобы убедить вас 😉
Ответ №3:
Если у вас есть данные в длинном формате, вы можете использовать facet_wrap
ggplot2
их без циклов:
library(ggplot2)
library(dplyr)
df %>% pivot_longer(all_of(estados)) %>%
ggplot(aes(x=value))
geom_histogram()
ylab('frequência')
ggtitle("Histograma Nota Matemática ENEM 2017 - 2019")
facet_wrap(~name)
данные об игрушках
estados<-c("AC", "AL", "AP", "AM", "BA", "CE", "DF", "ES", "GO", "MA",
"MT", "MS", "MG", "PA", "PB", "PR", "PE", "PI", "RJ", "RN", "RS",
"RO", "RR", "SC", "SP", "SE", "TO")
set.seed(1)
df <- map_dfc(estados, ~rnorm(100)) %>% set_names(estados)