Ana, você em primeiro lugar você esta colocando uma lista dentro de uma matrix se você quer contabilizar o número de outliers veja o tamanho do vetor que você obteve dado as condições para tal faça as alterações em vermelho
porano<-apply(dados[-c(19,23,3 6,37),-1],2,function(x)c(summary(x),0)[1:7]) desviopadrao<-apply(dados[-c(19,23,36,37),-1],2,sd,na.rm=TRUE) variancia<-apply(dados[-c(19,23,36,37),-1],2,var,na.rm=TRUE) r<-apply(dados[-c(19,23,36,37),-1],2,range,na.rm=TRUE) diffr<-diff(r) iqr<-apply(dados[-c(19,23,36,37),-1],2,function(x){quantile(x,na.rm=TRUE)[4]-quantile(x,na.rm=TRUE)[2]}) besq<-apply(dados[-c(19,23,36,37),-1],2,function(x){quantile(x, na.rm=TRUE)[2]})-1.5*iqr bdt<-apply(dados[-c(19,23,36,37),-1],2,function(x){quantile(x, na.rm=TRUE)[4]})+1.5*iqr outliers<-rep(0,ncol(dados)-1) for(i in names(dados[-c(19,23,36,37),-1])){ tmp<-dados[-c(19,23,36,37),i] outliers[i]<-length(tmp[tmp > bdt[i] | dados[-c(19,23,36,37),i] < besq[i]]) } row.names(diffr) <- "Diferen?a do range" # Como o resultado do comando diff ? uma matriz, voc? precisa colocar o nome da linha antes de juntar todos os resultados rownames(porano)<-c("Mínimo","Primeiro Quartil","Mediana","Média","Terceiro Quartil","Máximo","NAs") todos_resultados_dados<-rbind(porano,"Desvio padr?o"=desviopadrao, "Vari?ncia"=variancia, diffr, iqr,besq,bdt,outliers) todos_resultados_dados Tito Conte 2013/5/17 <alanaro...@sapo.pt> > > Boa tarde estou a criar objectos para poder fazer o calculo dos outliers > mas está a dar tudo NULL, eu queria saber porque.. > dados lidos: > 2008 2009 2010 2011 2012 > 1 49 54 57 54 56 > 2 53 54 55 53 59 > 3 52 51 52 53 52 > 4 57 59 59 60 63 > 5 63 60 63 64 62 > 6 58 57 59 58 63 > estatísticas: > #estatísticas descritivas > porano<-apply(dados[-c(19,23,**36,37),-1],2,function(x)c(** > summary(x),0)[1:7]) > desviopadrao<-apply(dados[-c(**19,23,36,37),-1],2,sd,na.rm=**TRUE) > variancia<-apply(dados[-c(19,**23,36,37),-1],2,var,na.rm=**TRUE) > r<-apply(dados[-c(19,23,36,37)**,-1],2,range,na.rm=TRUE) > diffr<-diff(r) > iqr<-apply(dados[-c(19,23,36,**37),-1],2,function(x){** > quantile(x,na.rm=TRUE)[4]-**quantile(x,na.rm=TRUE)[2]}) > besq<-apply(dados[-c(19,23,36,**37),-1],2,function(x){**quantile(x, > na.rm=TRUE)[2]})-1.5*iqr > bdt<-apply(dados[-c(19,23,36,**37),-1],2,function(x){**quantile(x, > na.rm=TRUE)[4]})+1.5*iqr > outliers<-list() > for(i in names(dados[-c(19,23,36,37),-**1])){ > tmp<-dados[-c(19,23,36,37),i] > outliers[[i]]<-tmp[tmp > bdt[i] | dados[-c(19,23,36,37),i] < besq[i]] > } > row.names(diffr) <- "Diferen?a do range" # Como o resultado do comando > diff ? uma matriz, voc? precisa colocar o nome da linha antes de juntar > todos os resultados > rownames(porano)<-c("Mínimo","**Primeiro > Quartil","Mediana","Média","**Terceiro > Quartil","Máximo","NAs") > todos_resultados_dados<-rbind(**porano,"Desvio padr?o"=desviopadrao, > "Vari?ncia"=variancia, diffr, iqr,besq,bdt,outliers) > todos_resultados_dados > porano > resultado: > 2008 2009 2010 2011 2012 > Mínimo 48 52 56 55.33 58 > Primeiro Quartil 4.708149 4.198439 4.554801 5.255589 4.6888 > Mediana 22.16667 17.62689 20.74621 27.62121 21.98485 > Média 19 19 19 22 18 > Terceiro Quartil 6 5 7 6 7 > Máximo 43 44.5 41.5 44 41.5 > NAs 67 64.5 69.5 68 69.5 > Desvio padr?o Numeric,0 44 Numeric,0 43 Numeric,0 > Vari?ncia NULL NULL NULL NULL NULL > Diferen?a do range NULL NULL NULL NULL NULL > iqr NULL NULL NULL NULL NULL > besq NULL NULL NULL NULL NULL > bdt NULL NULL NULL NULL NULL > outliers NULL NULL NULL NULL NULL > porquê NULL? > Cumprimentos Ana Rocha > > ______________________________**_________________ > R-br mailing list > R-br@listas.c3sl.ufpr.br > https://listas.inf.ufpr.br/**cgi-bin/mailman/listinfo/r-br<https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br> > Leia o guia de postagem > (http://www.leg.ufpr.br/r-br-**guia<http://www.leg.ufpr.br/r-br-guia>) > e forneça código mínimo reproduzível. >
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.