<div dir="ltr"><div class="gmail_default" style=""><div class="gmail_default"><font face="verdana, sans-serif">Elias, bom dia!</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">Segue uma sugestão, caso ainda tenha interesse...</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace">### <code r></font></div><div class="gmail_default"><font face="monospace, monospace">df <- data.frame(</font></div><div class="gmail_default"><font face="monospace, monospace">     AGE = c(21,31,44,46,49,50,52,64,23,33),</font></div><div class="gmail_default"><font face="monospace, monospace">     AGE2 = c(21,31,44,46,49,50,52,64,23,33)+rnorm(10)*10,</font></div><div class="gmail_default"><font face="monospace, monospace">     PHA = factor(as.character(c(1,1,1,1,1,1,1,1,2,2)), lev=1:2, lab=c("NO", "YES")),</font></div><div class="gmail_default"><font face="monospace, monospace">     SMK = factor(as.character(c(1,1,1,1,1,1,1,1,1,1)), lev=1:2, lab=c("NO", "YES")),</font></div><div class="gmail_default"><font face="monospace, monospace">     ALC = factor(as.character(c(1,1,1,1,1,NA,2,NA,1,NA)), lev=1:2, lab=c("NO", "YES")))</font></div><div class="gmail_default"><font face="monospace, monospace">str(df)</font></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace">verNorm <- function(df) {</font></div><div class="gmail_default"><font face="monospace, monospace">     require(moments)</font></div><div class="gmail_default"><font face="monospace, monospace">     fac <- sapply(names(df), function(x) is.factor(df[,x]))</font></div><div class="gmail_default"><font face="monospace, monospace">     sapply(names(df[!fac]), function(x) {</font></div><div class="gmail_default"><font face="monospace, monospace">          skew <- round(skewness(df[,x]),2)</font></div><div class="gmail_default"><font face="monospace, monospace">          kurt <- round(kurtosis(df[,x]),2)</font></div><div class="gmail_default"><font face="monospace, monospace">          res  <- data.frame(skew, kurt)</font></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace">          x11() # uma janela para cada par de gráficos</font></div><div class="gmail_default"><font face="monospace, monospace">          par(mfrow=c(1,2))</font></div><div class="gmail_default"><font face="monospace, monospace">          hist(df[,x], main=x)</font></div><div class="gmail_default"><font face="monospace, monospace">          qqnorm(df[,x]); qqline(df[,x], col=2)</font></div><div class="gmail_default"><font face="monospace, monospace">          layout(1)</font></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace">          return(res)})</font></div><div class="gmail_default"><font face="monospace, monospace">}</font></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace">verNorm(df)</font></div><div class="gmail_default"><font face="monospace, monospace"><div class="gmail_default">#      AGE   AGE2 </div><div class="gmail_default"># skew -0.09 -0.64</div><div class="gmail_default"># kurt 1.99  3.15</div><div class="gmail_default"><br></div></font></div><div class="gmail_default"><font face="monospace, monospace">### </code></font></div></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><font face="arial, helvetica, sans-serif" style="font-size:small"><div style="font-family:'trebuchet ms',sans-serif;display:inline">​</div></font><font face="arial, helvetica, sans-serif" style="font-size:12.8px"><span style="font-size:small">================================================</span><br>Éder Comunello</font><div style="font-size:12.8px"><span style="font-family:arial,helvetica,sans-serif">Agronomist (UEM), MSc in Environ. Sciences (UEM)</span><font face="arial, helvetica, sans-serif"><br></font></div><div style="font-size:12.8px"><div style="font-size:small"><span style="font-family:arial,helvetica,sans-serif">DSc in Agricultural Systems Engineering (USP/Esalq)</span><br></div><div><span style="font-size:small">Brazilian Agricultural Research Corporation (</span><font face="arial, helvetica, sans-serif" style="font-size:small">Embrapa)</font></div><div><div><font face="arial, helvetica, sans-serif" style="font-size:small">Dourados, MS, Brazil </font><font face="arial, helvetica, sans-serif" size="2">|<O>|</font></div><div style="font-size:small"><span style="font-family:arial,helvetica,sans-serif">================================================</span><br></div></div></div><div style="font-size:small"><font face="arial, helvetica, sans-serif">GEO, </font>-22.2752, -54.8182, 408m<span style="font-family:arial,helvetica,sans-serif"><br></span></div><div style="font-size:12.8px"><span style="font-size:small;font-family:arial,helvetica,sans-serif">UTC-04:00 / DST: UTC-03:00</span></div><div><div><div><br></div><div><br></div></div><div style="font-size:small"><br></div></div></div></div></div></div></div></div></div></div></div>
<br><div class="gmail_quote">Em 6 de maio de 2016 08:12, Elias Carvalho <span dir="ltr"><<a href="mailto:ecacarva@gmail.com" target="_blank">ecacarva@gmail.com</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Bom dia Pessoal<div><br></div><div>Eu tenho o seguinte data frame:</div><div><br></div><div><pre style="font-family:'Ubuntu Mono';outline:none;border:none;margin-top:0px;margin-bottom:0px;line-height:12.3077px;color:rgb(255,255,255);font-size:10.4pt!important;white-space:pre-wrap!important;background-color:rgb(0,34,64)">'data.frame':   1999 obs. of  14 variables:
 $ AGE: int  21 31 44 46 49 50 52 64 23 33 ...
 $ PHA: Factor w/ 2 levels "NO","YES": 1 1 1 1 1 1 1 1 2 2 ...
 $ SMK: Factor w/ 2 levels "NO","YES": 1 1 1 1 1 1 1 1 1 1 ...
 $ ALC: Factor w/ 2 levels "NO","YES": 1 1 1 1 1 NA 2 NA 1 NA ...</pre><pre style="font-family:'Ubuntu Mono';outline:none;border:none;margin-top:0px;margin-bottom:0px;line-height:12.3077px;color:rgb(255,255,255);font-size:10.4pt!important;white-space:pre-wrap!important;background-color:rgb(0,34,64)"><br></pre><pre style="font-family:'Ubuntu Mono';outline:none;border:none;margin-top:0px;margin-bottom:0px;line-height:12.3077px;color:rgb(255,255,255);font-size:10.4pt!important;white-space:pre-wrap!important;background-color:rgb(0,34,64)"><br></pre><div><br></div><div>E preciso rodar uma rotina para verificar a normalidade de cada variável de uma só vez, então fiz assim (ps: me perdoem o 'for' eu sou programador das antigas e ainda estou aprendendo a user os ...apply):</div><div><br></div><div><div>for (x in 1:length(names(data)))<b> # vai de 1 a 4 passando por todas as variáveis </b></div><div>{</div></div><div><b>   # Insere o nome da variável em uma matriz</b></div><div>   commandP <- paste("nmatrix[",x,",1] <- names(data)[x]", sep="")</div><div>   eval(parse(text=commandP))  </div><div><b> # aplicar apenas para variaveis continuas</b></div><div><div><b> if (!is.factor(data$names(data)[x])) </b></div><div>    {</div><div>      <b># na coluna 2 da matriz insere valores referente a skewness</b></div><div>      commandP <- paste("nmatrix[",x,",2] <- round(skewness(data$", names(data)[x],"),2)", sep="")<br></div><div>      eval(parse(text=commandP))</div><div>      <b># na coluna3 da matriz insere valores referente a kurtosis</b></div><div>      commandP <- paste("nmatrix[",x,",3] <- round(kurtosis(data$", names(data)[x],"),2)", sep="")<br></div><div>      eval(parse(text=commandP))</div><div>   <b>   # gera um histograma para cada variável</b> já com par(mfrow...) calculado de acordo com o </div><div>      #  numero de variáveis  </div><div>      commandP <- paste("hist(data$", names(data)[x],")", sep="")</div><div>      eval(parse(text=commandP))</div><div>      <b># gera um gráfico de quartil para cada variável já com par(mfrow...) calculado de </b></div><div><b>      # acordo </b><b>com a quantidade de variáveis</b> </div><div>      commandP <- paste("qqnorm(data$", names(data)[x],")", sep="")<br></div><div>      eval(parse(text=commandP))</div><div><b>      # Insere a linha no gráfico      </b></div><div>      commandP <- paste("abline(0,1)", sep="")</div><div>      eval(parse(text=commandP))</div><div>    }</div></div><div><br></div><div>O Resultado que quero parecido com o abaixo, mas para todas as variáveis:</div><div><pre style="font-family:'Ubuntu Mono';outline:none;border:none;margin-top:0px;margin-bottom:0px;line-height:12.3077px;color:rgb(255,255,255);font-size:10.4pt!important;white-space:pre-wrap!important;background-color:rgb(0,34,64)"><span style="color:rgb(255,157,0)">nmatrix
</span>      [,1]  [,2]    [,3]  
 [1,] "AGE" "-0.13" "2.28"</pre></div><div><br></div><div><img src="cid:ii_invobuvg0_15485f4560fee924" width="541" height="309"><br>​<br></div><div><br></div><div><br></div><div>O meu problema é na linha  if (!is.factor(data$names(data)[x])) que identifica todas as variáveis como caracter, o que não está errado, pois pega por exemplo "AGE" e então sempre retorna falso e na verdade eu queria algo como "!is.factor(data$AGE), !is.factor(data$SMK)....</div><div><br></div><div>ou se alguem conhecer um pacote que faça isso de maneira mais fácil agradeço a sugestão</div><div><br></div><div>Obrigado <br></div>-</div><div><br></div><div>Elias<br><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div><a href="http://lattes.cnpq.br/4248328961021251" target="_blank"></a><br></div></div></div></div></div></div>
</div></div>
<br>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div><br></div>