Um jeito super fácil de criar e excluir colunas no R

Manipular dados no R é super prático desde sempre. Mas há uma função em especial que eu tenho grande apreço, pois não apenas é fácil de utilizar, mas a sintaxe é extremamente intuitiva. As funções que serão vistas aqui servem para criar novas colunas de diversas formas, novas colunas com base na soma ou outra operação com colunas existentes, pegando o valor da linha anterior ou posterior, soma cumulativa, percentual por linha, dentre outras coisas. Sem mais delongas, vamos falar do mutate() e do transmute()Continuar a ler “Um jeito super fácil de criar e excluir colunas no R”

Introdução ao SQL + Left Join + Case When

Como sempre digo, aprender SQL é fundamental para um cientista de dados. Apesar de focarmos muito em Python, R e SAS, nenhuma linguagem é tão comum às empresas quanto SQL. Então não deixe de estudá-la. Abaixo, vou te introduzir à linguagem, ensinar como unir tabelas da mesma forma que você faria com o PROCV no Excel, e ensinar a utilizar condicionais. Bora! Continuar a ler “Introdução ao SQL + Left Join + Case When”

CASE WHEN no SQL (Condicionais)

No SAS e em outras linguagens, contamos com o IF para criar novas informações a partir de outras que já temos. Por exemplo, se eu quero criar um campo que receba 1, se o cliente for de MG, e 0, caso contrário, eu apelo para o IF. E é muito intuitivo. SE (if) o cliente é de MG (UF=”MG”) então (then) o campo novo recebe 1. Caso contrário, recebe 0. Seria algo como o script abaixo: Continuar a ler “CASE WHEN no SQL (Condicionais)”

Como marcar o percentil no SAS?

Matemáticos, estatísticos e cientistas de dados em geral, gostam de trabalhar com percentil. Faz mais sentido do que dividir uma variável contínua em faixas de valor quaisquer, escolhidas de forma subjetiva. No SAS, eu costumo criar essas faixas com o PROC UNIVARIATE. Eu crio uma tabela auxiliar com os valores de cada percentil e depois marco na minha base à qual percentil que o indivíduo (ou elemento qualquer ali) pertence. Não sei se é a melhor forma, mas funciona. Espero que o código abaixo lhe seja útil: Continuar a ler “Como marcar o percentil no SAS?”

Soma com condição no SAS: Agrupamentos com Proc Sql

O group by é um método bem tranquilo de agrupar os valores de uma coluna de acordo com os valores de outra coluna. Veja os três exemplos abaixo, onde queremos primeiro saber qual o número de vendas de cada marca, o número de vendas por estado e o número de vendas de cada marca em cada estado:

Leia mais…

Criando classes / categorias no SAS

Já expliquei no post Percentil – Conceito e Código SAS o que é percentil e como obtê-lo no SAS. Agora, uma coisa que é interessante, e eu precisei usar recentemente, é criar classes no SAS. Há uma forma bem direta de fazer isso através do proc rank. Porém, já havia um código mais “roots” para fazer isso e acho legal compartilhar. É interessante ver alternativas ao que já está preparado (outros softwares podem não ter o comando).

Para demonstrar melhor como criar classes, eu aumentei minha base de dados contendo as alturas dos indivíduos de uma amostra. Para não confundir com a tabela AMOSTRA, eu criei uma nova tabela chamada POPULACAO, contendo 60 alturas. O que vamos fazer no exemplo é criar uma coluna adicional na tabela com as letras de A a J indicando a qual percentil a altura do indivíduo pertence. Isso pode ser útil para obter dummies para regressões e até mesmo para tomar estatística descritiva dos indivíduos, e desse jeito é mais fácil do que utilizando o IF.

Para obter as classes, há dois passos:

  • Primeiro você deve obter o valor de cada percentil, nesse exemplo, comecei do 10° percentil e utilizei intervalos de 10 em 10, mas você pode dividir como for melhor para sua análise:
proc univariate data= work.populacao;
    var altura; output OUT=work.altura 
       pctlpre=p_altura_ pctlpts= 10 to 100 by 10;
run;
  • Agora, vou utilizar o CASE WHEN, que é uma função para lidar com condições no SAS. Veja abaixo que a gente inicia o código com o proc sql seguido de ponto e vírgula como sempre, até aí nenhuma novidade. Em seguida ‘dizemos’ para o SAS criar uma tabela (create table) com o nome populacao_classes na nossa work. Como nós queremos gerar essa nossa nova base a partir da base populacao criada anteriormente, é preciso dizer ao SAS quais campos ele deve trazer da base original. O asterisco após o select indica que o SAS vai trazer todos os campos da base de origem, que no caso é a tabela populacao que está na work. Em seguida vem o case when, que dá o comando ao SAS para atribuir uma letra caso a altura do indivíduo esteja no percentil em questão:
proc sql;
    create table populacao_classes as select *,

      case
      when altura <= (select p_altura_10 from work.altura) then 'A'
      when altura <= (select p_altura_20 from work.altura) then 'B'
      when altura <= (select p_altura_30 from work.altura) then 'C'
      when altura <= (select p_altura_40 from work.altura) then 'D'
      when altura <= (select p_altura_50 from work.altura) then 'E'
      when altura <= (select p_altura_60 from work.altura) then 'F'
      when altura <= (select p_altura_70 from work.altura) then 'G'
      when altura <= (select p_altura_80 from work.altura) then 'H'
      when altura <= (select p_altura_90 from work.altura) then 'I'
      when altura <= (select p_altura_100 from work.altura) then 'J'
      else 'outros'
    end AS classe_altura

    from work.populacao;
proc print;
run;

Para os que ainda estão com dúvidas, segue uma imagem para facilitar o entendimento (veja que as bases na imagem abaixo vão até a linha 25, e não até a linha 60 que é a última linha):