#========================================================================================== # Aula 8 da disciplina ce223 (29/03/2011) # Avaliação assistida do conteúdo já apresentado (com soluções) # Professor Walmes M. Zeviani # www.leg.ufpr.br/ce223 #========================================================================================== #------------------------------------------------------------------------------------------ # criar um vetor com a seguinte sequencia: a c e g i k m o q s u w y letters[1:13*2-1] # solução 1 letters[seq(1,26,by=2)] # solução 2 #------------------------------------------------------------------------------------------ # criar um objeto data.frame no R com os seguites dados # dica: fazer sem textConnection() e com textConnection() #.......................................................................................... # solução 1 da <- data.frame(sexo=rep(c("M","F"), times=7)) da$idade <- rep(17:23, each=2) da$peso <- c() # digitar os valores separados por virgula #.......................................................................................... # solução 2 da$peso <- scan() # digitar os valores usando a scan() #.......................................................................................... # solução 3 da <- expand.grid(sexo=gl(2,1,labels=c("M","F")), idade=17:23) da$peso <- scan() # digitar os valores usando a scan gl(6, 3, labels=c("eu","tu","ele","nós","vós","eles")) is.factor(gl(5, 3)) #.......................................................................................... # solução 4 x <- "sexo idade peso M 17 79.7 F 17 79.1 M 18 77.6 F 18 80.4 M 19 81.2 F 19 80.2 M 20 80.4 F 20 83.6 M 21 81.2 F 21 78.2 M 22 80.3 F 22 78.7 M 23 79.2 F 23 80.0" da <- read.table(textConnection(x), header=TRUE); closeAllConnections() str(da) #------------------------------------------------------------------------------------------ # importar o dados do ipeadata que se encontram no caminho: # regional > nível geográfico > município > temas > população > população total 2010 # dica: escolher um formato de importação e tirar a apresentação de milhar #------------------------------------------------------------------------------------------ # ler dos dados do link http://www.leg.ufpr.br/~walmes/ensino/ce223-2011-01/dadospoptot2010.txt no R x <- "http://www.leg.ufpr.br/~walmes/ensino/ce223-2011-01/dadospoptot2010.txt" poptot <- read.table(x, header=TRUE, sep="\t", quote="") str(poptot) x <- "http://www.leg.ufpr.br/~walmes/ensino/ce223-2011-01/dadospoptot2010.csv" poptot <- read.csv2(x, header=TRUE, sep=";") poptot <- read.csv(x, header=TRUE, sep=";") str(poptot) #------------------------------------------------------------------------------------------ # quantas colunas/linhas possui o conjunto de dados? str(poptot) # solução 1 nrow(poptot); ncol(poptot) # solução 2 dim(poptot) # solução 3 length(poptot[,1]) # solução 4 #------------------------------------------------------------------------------------------ # quais as colunas com tipo de dado numérico? #.......................................................................................... # solução 1, olhar o str() do objeto e anotar o número de colunas númericas str(poptot) #.......................................................................................... # solução 2, pedir a classe de todas as colunas e somar aquelas que são numeric e integer classe <- sapply(1:ncol(poptot), function(x){ class(poptot[,x]) } ) sum(classe%in%c("integer","numeric")) #------------------------------------------------------------------------------------------ # obter a soma da coluna a2010, lembre-se que existem NA's sum(poptot$a2010, na.rm=TRUE) # solução 1 sum(na.omit(poptot$a2010)) # solução 2 sum(poptot$a2010[!is.na(poptot$a2010)]) # solução 3 #------------------------------------------------------------------------------------------ # obter o valor máximo e mínimo da coluna a2010 range(poptot$a2010, na.rm=TRUE) # solução 1 max(poptot$a2010, na.rm=TRUE); min(poptot$a2010, na.rm=TRUE) # solução 2 #.......................................................................................... # quais as cidades mais e menos populosas em 2010 #.......................................................................................... # solução 1 poptot[which.max(poptot$a2010),] poptot[which.min(poptot$a2010),] #.......................................................................................... # solução 2, gráfico plot(poptot$a2010) identify(x=1:nrow(poptot), y=poptot$a2010, labels=poptot$Município) plot(sqrt(poptot$a2010)) identify(x=1:nrow(poptot), sqrt(poptot$a2010), labels=poptot$Município) #.......................................................................................... # colocando os nomes nas 20 mais populosas mp <- poptot[order(poptot$a2010, decreasing=TRUE),][1:25, c("a2010","Município")] str(mp) plot(poptot$a2010) text(rownames(mp), mp$a2010, labels=mp$Muni, pos=3) plot(poptot$a2010) text(rownames(mp), mp$a2010+200000, labels=mp$Muni, adj=c(0), srt=90) #------------------------------------------------------------------------------------------ # obter a população total do estado do MS em 2010 #.......................................................................................... # solução 1 sum(poptot[poptot$Sigla=="MS","a2010"], na.rm=TRUE) #.......................................................................................... # solução 2 MS <- subset(poptot, Sigla=="MS") sum(MS$a2010, na.rm=TRUE) #------------------------------------------------------------------------------------------ # obter a população total de todos os estados em 2010 with(poptot, tapply(a2010, Sigla, sum, na.rm=TRUE)) #.......................................................................................... # extra: qual a cidade mais populosa de cada estado em 2010 a1 <- poptot$a2010 names(a1) names(a1) <- poptot$Muni tapply(a1, poptot$Sigla, function(x){ names(x)[which.max(x)] }) #------------------------------------------------------------------------------------------ # criar um novo objeto apenas com os dados referente às cidades do Paraná PR <- subset(poptot, Sigla=="PR") str(PR) #------------------------------------------------------------------------------------------ # calcular a população do Paraná para todos os anos apply(PR[,4:8], 2, sum, na.rm=TRUE) #.......................................................................................... # fazer um gráfico de linhas para as 10 cidades mais populosas do PR ao longo dos anos mPR <- PR[order(PR$a2010, decreasing=TRUE),][1:10,] str(mPR) pop <- as.matrix(mPR[,4:8]) ano <- c(1991,1996,2000,2007,2010) matplot(ano, log(t(pop)), type="b", ylab=expression(log[e]*~da~pop)) legend("topleft", legend=mPR$Muni, lty=1:10, col=1:10, bty="n", ncol=2) #------------------------------------------------------------------------------------------ # mostrar os dados para a cidade de Dourados e Bonito poptot[poptot$Município=="Dourados",] poptot[poptot$Município=="Bonito",] poptot[poptot$Município=="Bonito" & poptot$Sigla=="MS",] #------------------------------------------------------------------------------------------ # fazer um histograma com os dados da coluna a2010 hist(poptot$a2010, freq=FALSE) lines(density(poptot$a2010, na.rm=TRUE)) #------------------------------------------------------------------------------------------ # fazer um histograma do logaritmo da população em 2010 hist(log(poptot$a2010), freq=FALSE) lines(density(log(poptot$a2010), na.rm=TRUE)) #------------------------------------------------------------------------------------------ # adicionar aos dados uma coluna com o log(a2010) poptot$loga2010 <- log(poptot$a2010) str(poptot) #.......................................................................................... # extra: fazer um boxplot da loga2010 por estado boxplot(loga2010~Sigla, data=poptot, las=2) #.......................................................................................... # extra: fazer um gráfico de setor (pizza) com a proporção da pop por estado em 2010 proppop <- with(poptot, tapply(a2010, Sigla, sum, na.rm=TRUE))/sum(poptot$a2010, na.rm=TRUE) proppop pie(proppop) proppop <- sort(proppop) pie(proppop) #------------------------------------------------------------------------------------------ # quantas cidades tem população maior que 50000 habitantes em 2010? str(subset(poptot, a2010>50000)) #------------------------------------------------------------------------------------------