Ludmila Maria Rattios Teixeira ##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. resposta Athens Paris Madrid Stockholm Athens 0 3000 3949 3927 Paris 3000 0 1273 1827 Madrid 3949 1273 0 3188 Stockholm 3927 1827 3188 0 2-)Compare sua matriz com o objeto eurodist, disponível no pacote datasets. R: table(resposta==distancia) TRUE 16 As distancias fornecidas apresentaram-se iguais às de eurodist. ################################################################################################################### ##Criação de um data frame Imagine um experimento em que hamsters de dois fenótipos (claros e escuros) recebem três tipos diferentes de dieta, e no qual as diferenças dos pesos (g) entre o fim e o início do experimento sejam: DIETA A DIETA B DIETA C CLAROS 0.1 , 1.1 , 3.7 5.7, -1.2, -1.5 3.0, -0.4, 0.6 ESCUROS 1.5, -0.1, 2.0 0.6, -3.0, -0.3 -0.2, 0.3, 1.5 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. R: Cor Dieta Variação.do.peso 1 claro A 0.1 2 claro A 1.1 3 claro A 3.7 4 claro B 5.7 5 claro B -1.2 6 claro B -1.5 7 claro C 3.0 8 claro C -0.4 9 claro C 0.6 10 escuro A 1.5 11 escuro A -0.1 12 escuro A 2.0 13 escuro B 0.6 14 escuro B -3.0 15 escuro B -0.3 16 escuro C -0.2 17 escuro C 0.3 18 escuro C 1.5 2-) Qual a media por dieta e por fenótipo? R: A:1,38 B:0,05 C:0,80 Claro:1,23 Escuro:0,26 DICA: Use as funções de gerar repetições para criar os vetores dos tratamentos. OPCIONAL: depois de fazer este exercício com as funções de repetição, experimente repetí-lo com a função expand.grid ##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. R: [,1] [,2] [,3] [,4] [,5] [1,] 8.189032 13.337520 8.860970 13.032324 8.185368 [2,] 7.330091 8.448933 16.646303 13.471300 3.426036 [3,] 6.295142 4.763480 5.923909 7.484398 8.286210 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. R: rownames(matriz3) <-paste ("L",1:3) colnames(matriz3) <-paste ("C",1:5) C 1 C 2 C 3 C 4 C 5 L 1 8.189032 13.337520 8.860970 13.032324 8.185368 L 2 7.330091 8.448933 16.646303 13.471300 3.426036 L 3 6.295142 4.763480 5.923909 7.484398 8.286210 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. vector.col=c("C1","C2","C3","C4","C5","L1","L2","L3") tabela=data.frame(vector.col,row.names=NULL) tabela tabela$Media="vetor.media" tabela media.das.linhas=apply(matriz3, 1, mean) media.das.linhas media.das.colunas=apply(matriz3,2,mean) media.das.colunas var.das.linhas=apply(matriz3,1,var) var.das.colunas=apply(matriz3,2,var) vetor.media=c(media.das.colunas,media.das.linhas) vetor.media var.das.colunas=as.vector(var.das.colunas) var.das.linhas=as.vector(var.das.linhas) vetor.media=c(media.das.colunas,media.das.linhas) vetor.var=c(var.das.colunas,var.das.linhas) vetor.var vetor.media tabela$Media = vetor.media tabela tabela$Var=vetor.var R: Posicao Media Variancia 1 C1 10.188805 53.705937 2 C2 13.820196 15.178842 3 C3 13.928704 17.406643 4 C4 11.516475 6.253093 5 C5 12.796619 33.547453 6 L1 13.738982 5.646962 7 L2 13.993040 21.932434 8 L3 9.618457 28.017954 ##Lendo e Salvando seus dados 1-)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. R: teste=read.table("teste.csv",header=T,sep=",",row.names=NULL) teste str(teste) head(teste) dim(teste) names(teste) table(teste$figo,teste$fundadoras) summary(teste) 2-)Faça uma seleção de um estado de atributo de um vetor fator e salve em um objeto (uma espécie, uma localidade…), mantendo todos os outros dados. Em seguida selecione apenas três colunas dos dados e salve em outro objeto e depois em um arquivo de formato .txt, separado por tabulação e sem nome de linhas. Lembre-se de olhar o help antes de surtar! Para verificar se o arquivo está correto abra-o no EXeCELente programa da Microsoft! teste$local local.vetor=teste$local teste[,4:6] colunas.dados=teste[,4:6] > head=(colunas.dados) > colunas.dados=teste[,4:6] > colunas.dados figo fundadoras ostiolo 1 1 4 0 2 2 6 0 3 3 8 0 4 4 6 0 5 5 5 0 6 6 1 0 7 7 4 0 8 8 4 1 9 9 3 0 10 10 2 0 11 11 1 0 12 12 8 0 13 13 0 0 14 14 3 0 15 15 4 1 16 16 2 1 17 17 3 0 18 18 2 0 19 19 2 3 20 20 9 1 21 21 1 0 22 22 5 2 23 23 7 0 24 24 0 2 25 25 1 0 26 26 6 0 27 27 4 0 28 28 1 0 29 29 0 0 30 30 3 0 31 31 22 0 32 32 4 0 33 33 2 1 34 34 1 2 35 35 6 2 36 36 3 0 37 37 2 2 38 38 0 1 39 39 2 1 40 40 0 8 41 41 3 3 42 42 6 0 43 43 7 0 44 44 6 0 45 45 9 0 46 46 5 0 47 47 6 0 48 48 3 0 49 49 1 1 50 50 2 1 write.table(teste,"colunas.dados", append = FALSE, quote = TRUE, sep = ", ", eol = "\n", na = "NA", dec = ".", row.names =FALSE,col.names = TRUE, qmethod = c("escape", "double")) individuo "data" "local" "figo" "fundadoras" "ostiolo" TS270a "24/06/08" "Teodoro Sampaio" 1 4 0 TS270a "24/06/08" "Teodoro Sampaio" 2 6 0 TS270a "24/06/08" "Teodoro Sampaio" 3 8 0 TS270a "24/06/08" "Teodoro Sampaio" 4 6 0 TS270a "24/06/08" "Teodoro Sampaio" 5 5 0 TS270a "24/06/08" "Teodoro Sampaio" 6 1 0 TS270a "24/06/08" "Teodoro Sampaio" 7 4 0 TS270a "24/06/08" "Teodoro Sampaio" 8 4 1 TS270a "24/06/08" "Teodoro Sampaio" 9 3 0 TS270a "24/06/08" "Teodoro Sampaio" 10 2 0 TS270a "24/06/08" "Teodoro Sampaio" 11 1 0 TS270a "24/06/08" "Teodoro Sampaio" 12 8 0 TS270a "24/06/08" "Teodoro Sampaio" 13 0 0 TS270a "24/06/08" "Teodoro Sampaio" 14 3 0 TS270a "24/06/08" "Teodoro Sampaio" 15 4 1 TS270a "24/06/08" "Teodoro Sampaio" 16 2 1 TS270a "24/06/08" "Teodoro Sampaio" 17 3 0 TS270a "24/06/08" "Teodoro Sampaio" 18 2 0 TS270a "24/06/08" "Teodoro Sampaio" 19 2 3 TS270a "24/06/08" "Teodoro Sampaio" 20 9 1 TS270a "24/06/08" "Teodoro Sampaio" 21 1 0 TS270a "24/06/08" "Teodoro Sampaio" 22 5 2 TS270a "24/06/08" "Teodoro Sampaio" 23 7 0 TS270a "24/06/08" "Teodoro Sampaio" 24 0 2 TS270a "24/06/08" "Teodoro Sampaio" 25 1 0 TS270a "24/06/08" "Teodoro Sampaio" 26 6 0 TS270a "24/06/08" "Teodoro Sampaio" 27 4 0 TS270a "24/06/08" "Teodoro Sampaio" 28 1 0 TS270a "24/06/08" "Teodoro Sampaio" 29 0 0 TS270a "24/06/08" "Teodoro Sampaio" 30 3 0 TS270a "24/06/08" "Teodoro Sampaio" 31 22 0 TS270a "24/06/08" "Teodoro Sampaio" 32 4 0 TS270a "24/06/08" "Teodoro Sampaio" 33 2 1 TS270a "24/06/08" "Teodoro Sampaio" 34 1 2 TS270a "24/06/08" "Teodoro Sampaio" 35 6 2 TS270a "24/06/08" "Teodoro Sampaio" 36 3 0 TS270a "24/06/08" "Teodoro Sampaio" 37 2 2 TS270a "24/06/08" "Teodoro Sampaio" 38 0 1 TS270a "24/06/08" "Teodoro Sampaio" 39 2 1 TS270a "24/06/08" "Teodoro Sampaio" 40 0 8 TS270a "24/06/08" "Teodoro Sampaio" 41 3 3 TS270a "24/06/08" "Teodoro Sampaio" 42 6 0 TS270a "24/06/08" "Teodoro Sampaio" 43 7 0 TS270a "24/06/08" "Teodoro Sampaio" 44 6 0 TS270a "24/06/08" "Teodoro Sampaio" 45 9 0 TS270a "24/06/08" "Teodoro Sampaio" 46 5 0 TS270a "24/06/08" "Teodoro Sampaio" 47 6 0 TS270a "24/06/08" "Teodoro Sampaio" 48 3 0 TS270a "24/06/08" "Teodoro Sampaio" 49 1 1 TS270a "24/06/08" "Teodoro Sampaio" 50 2 1 ##Classes de Objetos O pacote “datasets” contém vários conjuntos de dados para uso em treinamento com a linguagem R. O conjunto “iris” é distribuído de duas formas diferentes, nos objetos iris e iris3. São quatro medidas de flores de três espécies de Iris (Iridaceae). 1-)Quais são as classes desses dois objetos? R: class(iris) "data.frame" class(iris3) "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 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. R: names(iris)=c("Comp. sepalas","Larg. sepalas","Comp. petalas","Larg. petalas","Especies") head(names) Comp. sepalas Larg. sepalas Comp. petalas Larg. petalas Especies 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa > ##Acrescentando Dados de Síntese 1-)Crie um objeto com os dados do arquivo-texto esaligna.csv. R: read.table("esaligna",sep=",", as.is=T, header=T, row.names=NULL) esaligna=read.table("esaligna.csv",sep=",", as.is=T, header=T, row.names=NULL) 2-)Verifique o conteúdo do objeto resultante, com a função summary. summary(esaligna) arvore classe talhao dap Min. : 1.000 Length:36 Min. :16.00 Min. : 5.900 1st Qu.: 3.000 Class :character 1st Qu.:17.00 1st Qu.: 8.575 Median : 5.000 Mode :character Median :22.00 Median :12.450 Mean : 5.167 Mean :21.86 Mean :12.935 3rd Qu.: 7.250 3rd Qu.:23.00 3rd Qu.:16.625 Max. :10.000 Max. :32.00 Max. :23.000 ht tronco sobra folha Min. : 6.36 Min. : 1.96 Min. : 1.810 Min. : 0.120 1st Qu.:11.03 1st Qu.: 15.57 1st Qu.: 5.935 1st Qu.: 1.575 Median :12.75 Median : 47.52 Median : 8.735 Median : 3.835 Mean :13.51 Mean : 71.38 Mean :14.574 Mean : 7.232 3rd Qu.:16.35 3rd Qu.:107.07 3rd Qu.:16.473 3rd Qu.: 8.352 Max. :25.52 Max. :272.16 Max. :65.830 Max. :48.520 total Min. : 7.67 1st Qu.: 30.46 Median : 59.79 Mean : 93.20 3rd Qu.:124.23 Max. :299.91 3-)Acrescente uma nova coluna ao data frame resultante, com a soma das biomassas de folhas e do tronco de cada árvore. esaligna$soma.biomassas=esaligna$tronco+esaligna$folha esaligna > head(esaligna) arvore classe talhao dap ht tronco sobra folha total soma.biomassas 1 6 c 22 19.9 21.50 183.64 20.42 8.57 212.64 192.21 2 8 b 23 12.4 15.74 42.29 6.58 2.52 51.40 44.81 3 7 c 32 16.5 11.74 60.61 11.35 48.52 120.49 109.13 4 8 a 32 9.0 7.72 12.28 9.99 27.67 49.95 39.95 5 9 a 32 7.0 6.55 11.86 7.97 7.76 27.61 19.62 6 9 b 32 10.5 8.79 26.10 7.48 23.36 56.95 49.46 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) arvore classe talhao dap ht tronco sobra folha total soma.biomassas 6 c 22 19.9 21.50 183.64 20.42 8.57 212.64 192.21 8 b 23 12.4 15.74 42.29 6.58 2.52 51.40 44.81 7 c 32 16.5 11.74 60.61 11.35 48.52 120.49 109.13 8 a 32 9.0 7.72 12.28 9.99 27.67 49.95 39.95 9 a 32 7.0 6.55 11.86 7.97 7.76 27.61 19.62 9 b 32 10.5 8.79 26.10 7.48 23.36 56.95 49.46 area.basal 311.02553 120.76282 213.82465 63.61725 38.48451 86.59015 5-)Calcule a área basal total por talhão e salve em um objeto area.basal.total=tapply(esaligna$area.basal,esaligna$talhao,sum, simplify = TRUE) area.basal.total 16 17 18 22 23 32 561.167 1098.089 347.468 1023.382 1306.062 1136.866 6-)Calcule a média por talhão area.basal.media=tapply(esaligna$area.basal,esaligna$talhao,mean, simplify = TRUE) area.basal.media 16 17 18 22 23 32 93.52783 156.86982 115.82267 204.67633 163.25777 162.40940 7-)Selecione apenas os dados relativos à árvores com mais de 10 cm de diâmetro dap.maior.10 = esaligna[esaligna$dap>=10,] > head(dap.maior.10) arvore classe talhao dap ht tronco sobra folha total soma.biomassas 1 6 c 22 19.9 21.50 183.64 20.42 8.57 212.64 192.21 2 8 b 23 12.4 15.74 42.29 6.58 2.52 51.40 44.81 3 7 c 32 16.5 11.74 60.61 11.35 48.52 120.49 109.13 6 9 b 32 10.5 8.79 26.10 7.48 23.36 56.95 49.46 7 1 c 22 13.0 12.86 47.84 12.14 2.33 62.32 50.17 8 2 c 22 20.0 20.05 183.07 32.18 14.56 229.83 197.63 area.basal 1 311.02553 2 120.76282 3 213.82465 6 86.59015 7 132.73229 8 314.15927 8-)Salve em um arquivo txt, seperado por tabulação. write.table(dap.maior.10, file = "dap.10",sep="\t") UFA!