Resolvendo Todos Os Problemas Do Windows E Outros Programas

4 tarefas de transformação de dados em R para iniciantes avançados

Com grande poder vem não apenas grande responsabilidade, mas frequentemente grande complexidade - e isso certamente pode ser o caso de R. O Projeto R de código aberto para Computação Estatística, uma programaçãolinguagem e ambiente, oferece recursos imensos para investigar, manipular e analisar dados. Mas, por causa de sua sintaxe às vezes complicada, os iniciantes podem achar desafiador melhorar suas habilidades depois de aprender alguns princípios básicos.

Obtendo seus dados em torno de R

  • Adicionando uma coluna a um quadro de dados existente
    • Sintaxe 1: por equação
    • Sintaxe 2: função transform () de R
    • Sintaxe 3: Função de aplicação de R
    • Sintaxe 4: mapply ()
    • Sintaxe 5: dplyr de tidyverse
  • Obtendo resumos por subgrupos de dados
  • Caso especial de bônus: agrupamento por intervalo de datas
  • Classificando seus resultados
  • Remodelagem: ampla para longa
  • Remodelagem: longo para largo

Se você ainda não está no estágio em que se sente confortável para fazer tarefas rudimentares em R, recomendamos que você vá direto ao Computerworld's Guia do iniciante para R . Mas se você tem alguns princípios básicos e deseja dar mais um passo no desenvolvimento de suas habilidades de R - ou apenas deseja ver como fazer uma dessas quatro tarefas em R - por favor, continue lendo.



Eu criei um conjunto de dados de amostra com três anos de dados de receita e lucro da Apple, Google e Microsoft, observando o desempenho das empresas logo após a 'Grande Recessão' de 2008-09. (A fonte dos dados eram as próprias empresas; 'fy' significa ano fiscal.) Se desejar acompanhar, você pode digitar (ou copiar e colar) isso na janela do terminal R:



fy <- c(2010,2011,2012,2010,2011,2012,2010,2011,2012) company <- c('Apple','Apple','Apple','Google','Google','Google','Microsoft','Microsoft','Microsoft') revenue <- c(65225,108249,156508,29321,37905,50175,62484,69943,73723) profit <- c(14013,25922,41733,8505,9737,10737,18760,23150,16978) companiesData <- data.frame(fy, company, revenue, profit)

O código acima criará um quadro de dados como o abaixo, armazenado em uma variável chamada 'companiesData':

fy empresa receita lucro
1 2010 maçã 65225 14013
2 2011 maçã 108249 25922
3 2012 maçã 156508 41733
4 2010 Google 29321 8505
5 2011 Google 37905 9737
6 2012 Google 50175 10737
7 2010 Microsoft 62484 18760
8 2011 Microsoft 69943 23150
9 2012 Microsoft 73723 16978

(R adiciona seus próprios números de linha se você não incluir nomes de linha.)



Se você executar a função str () no quadro de dados para ver sua estrutura, verá que o ano está sendo tratado como um número e não como um ano ou fator:

str(companiesData) 'data.frame': 9 obs. of 4 variables: $ fy : num 2010 2011 2012 2010 2011 ... $ company: Factor w/ 3 levels 'Apple','Google',..: 1 1 1 2 2 2 3 3 3 $ revenue: num 65225 108249 156508 29321 37905 ... $ profit : num 14013 25922 41733 8505 9737 ...

Posso querer agrupar meus dados por ano, mas não pense que vou fazer uma análise baseada no tempo específica, então vou transformar a coluna de números em uma coluna que contém categorias R (chamadas de fatores). de datas com o seguinte comando:

companiesData$fy <- factor(companiesData$fy, ordered = TRUE)



aplicativo sprint direct connect now

Ao longo deste tutorial, também mostrarei como realizar essas tarefas usando pacotes no chamado 'tidyverse' - um ecossistema inicialmente defendido pelo cientista-chefe da RStudio Hadley Wickham e agora apoiado por vários autores de código aberto. dentro e fora do RStudio.

Para criar fatores ordenados, o pacote tidyverse forcats tem várias opções, incluindo companiesData$fy <- forcats::as_factor(as.character(companiesData$fy)).

Agora estamos prontos para trabalhar.

Sharon Machlis do IDG demonstra como usar as novas funções pivot_longer e pivot_wider de tidyr. Mais detalhes na página 7.

Adicionando uma coluna a um quadro de dados existente

Uma das tarefas mais fáceis de executar em R é adicionar uma nova coluna a um quadro de dados com base em uma ou mais colunas. Você pode querer adicionar várias de suas colunas existentes, encontrar uma média ou então calcular algum 'resultado' dos dados existentes em cada linha.

Há muitas maneiras de fazer isso em R. Algumas parecerão muito complicadas para esta tarefa fácil em mãos, mas por agora você terá que acreditar em mim que algumas opções mais complexas às vezes podem ser úteis para usuários avançados com mais necessidades robustas. No entanto, se você está procurando uma maneira fácil e elegante de fazer isso agora, pule para a Sintaxe 5 e o pacote dplyr.

1800 4myxbox

Sintaxe 1: por equação

Basta criar um nome de variável para a nova coluna e passar uma fórmula de cálculo como seu valor se, por exemplo, você quiser uma nova coluna que é a soma de duas colunas existentes:

dataFrame $ newColumn<- dataFrame$oldColumn1 + dataFrame$oldColumn2

Como você provavelmente pode imaginar, isso cria uma nova coluna chamada 'newColumn' com a soma de oldColumn1 + oldColumn2 em cada linha.

como recuperar a pasta de favoritos excluída no Chrome

Para nosso quadro de dados de amostra denominado dados, poderíamos adicionar uma coluna para a margem de lucro dividindo o lucro pela receita e, em seguida, multiplicando por 100:

companiesData$margin <- (companiesData$profit / companiesData$revenue) * 100

Isso nos dá:

fy empresa receita lucro margem
1 2010 maçã 65225 14013 21,48409
2 2011 maçã 108248 25922 23,94664
3 2012 maçã 156508 41733 26,66509
4 2010 Google 29321 8505 29,00651
5 2011 Google 37905 9737 25,68790
6 2012 Google 50175 10737 21.39910
7 2010 Microsoft 62484 18760 30.02369
8 2011 Microsoft 69943 23150 33.09838
9 2012 Microsoft 73723 16978 23.02945

Uau - são muitas casas decimais na nova coluna de margem.

Podemos arredondar para apenas uma casa decimal com a função round (); round () assume o formato:

arredondar (número (s) a serem arredondados, quantas casas decimais você deseja)

Portanto, para arredondar a coluna da margem para uma casa decimal:

companiesData$margin <- round(companiesData$margin, 1)

E você obterá este resultado:

fy empresa receita lucro margem
1 2010 maçã 65225 14013 21,5
2 2011 maçã 108248 25922 23,9
3 2012 maçã 156508 41733 26,7
4 2010 Google 29321 8505 29,0
5 2011 Google 37905 9737 25,7
6 2012 Google 50175 10737 21,4
7 2010 Microsoft 62484 18760 30,0
8 2011 Microsoft 69943 23150 33,1
9 2012 Microsoft 73723 16978 23,0