Monise Terra Cerezini Exercícios Aula 3 #Distância entre cidades Abaixo as distâncias por estradas entre quatro cidades da Europa, em quilômetros: Atenas a Madri: 3949 Atenas a Paris: 3000 Atenas a Estocolmo: 3927 Madri a Paris: 1273 Madri a Estocolomo: 3188 Paris a Estocolmo: 1827 1. Construa uma matriz de distâncias com esses valores. > distancia=read.table("distancia.csv", header=T, sep=";", as.is=T) > distancia X Atenas Paris Madri Estocolmo 1 Atenas 0 3000 3949 3927 2 Paris 3000 0 1273 1827 3 Madri 3949 1273 0 3188 4 Estocolmo 3927 1827 3188 0 2. Compare sua matriz com o objeto eurodist, disponível no pacote datasets. dist.euro = as.matrix(eurodist) dist.euro = as.data.frame(dist.euro) names(dist.euro) dist.sel=distancia.euro[c(1,18,14,20),c(1,18,14,20)] class(dist.sel) dist.sel distancia #Criação de um data frame 1. Crie um data frame com esses dados, na qual cada hamster seja uma linha, e as colunas sejam as variáveis cor, dieta e variação do peso. dieta<-rep(c("A","B","C"),times=2,each=3) dieta cor<-rep(c("Claro","Escuro"),each=9) cor var.peso=c(0.1,1.1,3.7,5.7,-1.2,-1.5,3.0,-0.4,0.6,1.5,-0.1,2.0,0.6,-3.0,-0.3,-0.2,0.3,1.5) var.peso hamster=data.frame(dieta,cor,var.peso) hamster save.image() 2. Qual a media por dieta e por fenótipo? #Média por dieta media.a=mean(hamster$var.peso[hamster$dieta=="A"]) media.a media.b=mean(hamster$var.peso[hamster$dieta=="B"]) media.b media.c=mean(hamster$var.peso[hamster$dieta=="C"]) media.c #Média por fenótipo media.claro=mean(hamster$var.peso[hamster$cor=="Claro"]) media.claro media.escuro=mean(hamster$var.pes[hamster$cor=="Escuro"]) media.escuro #Criando uma Matriz 1. Crie um objeto da classe matriz com 5 colunas e 3 linhas contendo uma amostra de uma distribuição normal de média 10 e variância 3,6. > a<-rnorm(15,mean=10,sd=3.6) > a [1] 4.851390 14.890673 7.471718 1.885367 8.879391 10.503703 5.479555 [8] 6.176761 9.587843 15.990677 3.840889 13.970779 13.593656 9.292373 [15] 8.487177 > matriz<-matrix(a,nrow=3,ncol=5) > matriz [,1] [,2] [,3] [,4] [,5] [1,] 4.851390 1.885367 5.479555 15.990677 13.593656 [2,] 14.890673 8.879391 6.176761 3.840889 9.292373 [3,] 7.471718 10.503703 9.587843 13.970779 8.487177 2. Mude os nomes das linhas para “L1” a “L3” e das colunas para “C1” a “C5”. Dica: A função paste pode poupar trabalho. > colnames(matriz)<-paste("C",1:5) > matriz C 1 C 2 C 3 C 4 C 5 [1,] 4.851390 1.885367 5.479555 15.990677 13.593656 [2,] 14.890673 8.879391 6.176761 3.840889 9.292373 [3,] 7.471718 10.503703 9.587843 13.970779 8.487177 > rownames(matriz)<-paste("L",1:3) > matriz C 1 C 2 C 3 C 4 C 5 L 1 4.851390 1.885367 5.479555 15.990677 13.593656 L 2 14.890673 8.879391 6.176761 3.840889 9.292373 L 3 7.471718 10.503703 9.587843 13.970779 8.487177 3. Calcule a média e a variância por colunas e depois por linhas. Guarde os resultados em um dataframe diferenciando variância de média em dois vetores. media.linha=apply(matriz,1,mean) > media.linha L 1 L 2 L 3 8.360129 8.616017 10.004244 > media.coluna=apply(matriz,2,mean) > media.coluna C 1 C 2 C 3 C 4 C 5 9.071260 7.089487 7.081386 11.267448 10.457735 > var.linha=apply(matriz,1,var) > var.linha L 1 L 2 L 3 37.036643 17.162488 6.217857 > var.coluna=apply(matriz,2,var) > var.coluna C 1 C 2 C 3 C 4 C 5 27.115703 20.971749 4.833267 42.385336 7.537583 > resultado.linha=data.frame(media.linha,var.linha) > resultado.linha media.linha var.linha L 1 8.360129 37.036643 L 2 8.616017 17.162488 L 3 10.004244 6.217857 > resultado.coluna=data.frame(media.coluna,var.coluna) > resultado.coluna media.coluna var.coluna C 1 9.071260 27.115703 C 2 7.089487 20.971749 C 3 7.081386 4.833267 C 4 11.267448 42.385336 C 5 10.457735 7.537583 #Lendo e Salvando seus dados Leia um arquivo de dados de sua autoria e faça um sumário das variáveis independentes. Caso não tenha dados, terá que ir a campo, ou utilize alguns dos dados da área Arquivos de dados da nossa página . itirapina<-read.table("itirapina.csv",header=T,sep=",") itirapina str(itirapina) head(itirapina) dim(itirapina) class(itirapina) 1. Selecionando um estado de atributo de um vetor fator e salve em um objeto Astereae=itirapina[itirapina$tribo.planta=="Astereae",] Astereae 2. Selecionando três colunas de dados Astereae.3colunas=Astereae[,1:3] Astereae.3colunas 3. Salvando em um arquivo.txt write.table(Astereae.3colunas, file = "Astereae.3colunas.txt", append = FALSE, quote = TRUE, sep = " ,",dec = ".", row.names = FALSE, col.names = TRUE, qmethod = c("escape", "double")) write.table #Classes de Objetos 1. Quais são as classes desses dois objetos? > class(iris) [1] "data.frame" > class(iris3) [1] "array" 2. Calcule a média de cada uma das quatro medidas por espécie, dos dois objetos. DICA: as fuções da família apply irão te ajudar. > mean(iris$Sepal.Length) [1] 5.843333 > mean(iris$Sepal.Width) [1] 3.057333 > mean(iris$Petal.Length) [1] 3.758 > mean(iris$Petal.Width) [1] 1.199333 > apply(iris3,c(2,3),mean) Setosa Versicolor Virginica Sepal L. 5.006 5.936 6.588 Sepal W. 3.428 2.770 2.974 Petal L. 1.462 4.260 5.552 Petal W. 0.246 1.326 2.026 3. Os nomes das variaveis estão em inglês. Mude-os para português no objeto iris. DICA: Como tudo mais no R, os resultados da função names podem ser armazenados em um objeto. > names(iris)=c("Comp. sepalas","Larg. sepalas","Comp. petalas","Larg. petalas","Especies") > names(iris) [1] "Comp. sepalas" "Larg. sepalas" "Comp. petalas" "Larg. petalas" [5] "Especies" #Acrescentando Dados de Síntese 1. Crie um objeto com os dados do arquivo-texto esaligna.csv. esaligna=read.table("esaligna.csv", header=T, sep=",", as.is=T, row.names=NULL) 2. Verifique o conteúdo do objeto resultante, com a função summary. summary(esaligna) 3. Acrescente uma nova coluna ao data frame resultante, com a soma das biomassas de folhas e do tronco de cada árvore. esaligna$Biomass.total=esaligna$tronco+esaligna$folha summary(esaligna) 4. Acrescente outra coluna, com o valor da área basal de cada árvore. raio=esaligna$dap/2 area.basal=pi*raio^2 area.basal esaligna$area.basal=area.basal head(esaligna) 5. Calcule a área basal total por talhão e salve em um objeto area.basal.talhao = xtabs(Area.Basal~talhao, data=esaligna) area.basal.talhao 6. Calcule a média por talhão area.basal.media=tapply(esaligna$area.basal,esaligna$talhao,mean, simplify = TRUE) area.basal.media 7. Selecione apenas os dados relativos à árvores com mais de 10 cm de diâmetro Arvores.dap10=esaligna[esaligna$dap>=10,] Arvores.dap10 8. Salve em um arquivo txt, separado por tabulação. write.table(Arvores.dap10,"Arvores_DAP10cm.txt", append = FALSE, quote = TRUE, sep = ",",eol = "\n", na = "NA", dec = ".", row.names = FALSE, col.names = TRUE, qmethod = c("escape", "double"))