##Exercicio - Aula 3 - Leitura e Manipulação de dados # Camila Galheigo Coelho getwd() #ok! vamos lá #DISTANCIA ENTRE CIDADES# #Questao 1: Ate.Mad<-3949 Ate.Par<-3000 Ate.Est<-3927 Mad.Par<-1273 Mad.Est<-3188 Par.Est<-1827 ?matrix mat.dist.EU<-matrix(c(0,Ate.Mad,Ate.Par,Ate.Est,Ate.Mad,0,Mad.Par,Mad.Est,Ate.Par,Mad.Par,0,Par.Est,Ate.Est,Mad.Est,Par.Est,0),ncol=4,nrow=4) mat.dist.EU ?matrix colnames("Atenas", "Madri", "Paris", "Estocolmo") # Erro rownames("Atenas", "Madri", "Paris", "Estocolmo") # Erro colnames(mat.dist.EU)<-c("Atenas", "Madri", "Paris", "Estocolmo") rownames(mat.dist.EU)<-c("Atenas", "Madri", "Paris", "Estocolmo") mat.dist.EU #OK! Atenas Madri Paris Estocolmo Atenas 0 3949 3000 3927 Madri 949 0 1273 3188 Paris 000 1273 0 1827 Estocolmo 3927 3188 1827 0 class(mat.dist.EU) # "matrix" #Questao 2: search() # package:datasets presente eurodist class(eurodist) # [1] "dist" ?dist > mat.dist.EU<-as.dist(mat.dist.EU,diag=FALSE,upper=FALSE) > mat.dist.EU # retorna: Atenas Madri Paris # Madri 3949 # Paris 3000 1273 # Estocolmo 3927 3188 1827 save.image() #CRIACAO DE UM DATAFRAME# #Questao 1: dif.peso.hamst<-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) dif.peso.hamst dieta<-c(rep("A",3),rep("B",3),rep("C",3),rep("A",3),rep("B",3),rep("C",3)) dieta fen.hamst<-c(rep("claro",9),rep("escuro",9)) fen.hamst ?data.frame exp.hamst<-data.frame(dif.peso.hamst,dieta,fen.ham) exp.hamst #Questao 2: dieta<-factor(dieta) fen.hamst<-factor(fen.hamst) ?apply() tapply(exp.hamst$dif.peso.hamst,INDEX=dieta,FUN=mean) # A B C #1.383333 0.050000 0.800000 tapply(exp.hamst$dif.peso.hamst,INDEX=fen.hamst,FUN=mean) # claro escuro #1.2333333 0.255556 save.image() # Criando uma Matriz # #Questao 1: ?rnorm() # rnorm(n, mean = 0, sd = 1) valores <- rnorm(15, mean=10, sd=sqrt(3.6)) valores ?matrix # matrix(data = NA, nrow = 1, ncol = 1, ...) rand.matrix.1<-matrix(data=valores, nrow = 3, ncol = 5) rand.matrix.1 class(rand.matrix.1) #Questao 2 args(paste) rownames(rand.matrix.1)<-paste("L",1:3) colnames(rand.matrix.1)<-paste("C",1:5) rand.matrix.1 #Questao 3 #lembrando que $ não funciona para matrizes usar apply() args(apply) ?apply media.col<-apply(rand.matrix.1,MARGIN=2,FUN=mean) # MARGIN=2 seleciona dados das colunas da matriz media.col var.col<-apply(rand.matrix.1,2,var) var.col media.lin<-apply(rand.matrix.1,1,mean) # MARGIN=1=linha media.lin var.lin<-apply(rand.matrix.1,1,var) var.lin media.var<-data.frame(c(media.col,media.lin),c(var.col,var.lin)) names(media.var)<-c("média","variancia") media.var # retorna: # média variancia #C 1 9.038787 1.0063074 #C 2 11.652740 0.7613673 #C 3 9.209631 16.7866744 #C 4 10.241293 2.2449045 #C 5 11.428023 2.8201474 #L 1 9.683225 7.5513564 #L 2 10.171605 3.4452670 #L 3 11.087455 3.9558619 save.image() # Lendo e salvando seus dados # read.table("camila quebra coco.csv",header=T, sep=";") quebra.coco<-read.table("camila quebra coco.csv",header=T, sep=";") summary(quebra.coco) freq.indvs<-quebra.coco$individuos fx.et<-<-quebra.coco$faixa.etaria sex<-quebra.coco$sexo alvo.obs<-quebra.coco$alvo.observ displcmt<-quebra.coco$displacement golpes<-quebra.coco$golpes cocos.quebrados<-quebra.coco$cocos.quebrados dur<-quebra.coco$duracao save.image() write.csv("qualid.quebra.coco.csv",sep=";", row.names=TRUE) # Classes de Objetos # #Questao 1: class(iris) # "data.frame" mode(iris) # "list" length(iris) # 5 class(iris3) #"array" mode(iris3) #"numeric" length(iris3) #600 #Questao 2 apply(iris,2,mean) #erro: argument is not numeric or logical ? apply #descobri que esta função só pode ser usada com matrix ou array. Entao tranformei iris em matrix. iris.1<-as.matrix(iris) class(iris.1) # "matrix" mode(iris.1) # "character" Nada feito, não posso calcular médias de caracteres.. e agora? #vi a cara de iris e resolvi fazer os cálculos, indexando as linha correspondentes a cada especie. iris apply(iris[1:50,1:4],2,mean) #onde 1:50 espécie setosa #Sepal.Length Sepal.Width Petal.Length Petal.Width # 5.006 3.428 1.462 0.246 apply(iris[51:100,1:4],2,mean) #onde 51:100 espécie versicolor #Sepal.Length Sepal.Width Petal.Length Petal.Width # 5.936 2.770 4.260 1.326 apply(iris[101:150,1:4],2,mean) #onde 101:150 espécie virginica #Sepal.Length Sepal.Width Petal.Length Petal.Width # 6.588 2.974 5.552 2.026 #para iris3 o método acima não funciona. Erro: #entao tranformei iris3 em um dataframe: iris3.b<-as.data.frame(iris3) iris3.c #cada coluna representa a medida para cada espécie, assim é só calcular a média para cada coluna. apply(iris3.c,2,mean) # Sepal L..Setosa Sepal W..Setosa Petal L..Setosa Petal W..Setosa Sepal L..Versicolor Sepal W..Versicolor Petal L..Versicolor # 5.006 3.428 1.462 0.246 5.936 2.770 4.260 #Petal W..Versicolor Sepal L..Virginica Sepal W..Virginica Petal L..Virginica Petal W..Virginica # 1.326 6.588 2.974 5.552 2.026 # Questao 3: colnames(iris3.b)<-c("comp.sep.setosa","larg.sep.setosa","comp.pet.setosa","larg.pet.setosa","comp.sep.versicolor","larg.sep.versicolor","comp.pet.versicolor","larg.pet.versicolor","compr.sep.virginica","larg.sep.virginica","comp.pet.virginica","larg.pet.virginica") iris3.b colnames(iris)<-c("sepala.comp","sepala.larg","petala.comp","petala.larg") iris # Acrescentando dados de sintese # #Q1: read.table("esaligna.csv",header=TRUE,sep=",",as.is=TRUE) biomass.eucalyp<-read.table("esaligna.csv",header=TRUE,sep=",",as.is=TRUE) #Q2: summary(biomass.eucalyp) class(biomass.eucalyp) #"data.frame" mode(biomass.eucalyp) #"list" #Q3: biomass.tronco<-biomass.eucalyp$tronco biomass.folha<-biomass.eucalyp$folha biomass.tron.fol<-biomass.tronco+biomass.folha biomass.eucalyp$biomass.total<-biomass.tron.fol summary(biomass.eucalyp) #Q4: dap<-biomass.eucalyp$dap area.basal<-2*pi*(dap/2) biomass.eucalyp$area.basal<-area.basal summary(biomass.eucalyp) #Q5: area.basal.talhao<-aggregate(biomass.eucalyp$area.basal,by=list(biomass.eucalyp$talhao), FUN=sum) area.basal.talhao #Q6: media.area.basal.talhao<-aggregate(biomass.eucalyp$area.basal,by=list(biomass.eucalyp$talhao), FUN=mean) media.area.basal.talhao #Q7: biomass.eucalyp.dapmaior10<-biomass.eucalyp[biomass.eucalyp$dap>10, ] biomass.eucalyp.dapmaior10 #Q8: write.table("Biomass Eucalyp Maior.txt",sep="\t", row.names=TRUE)