10 Coisas que você pode fazer em r que você teria feito no microsoft excel

A planilha é provavelmente uma das aplicações de PC mais utilizados - e por uma boa razão: Spreadsheets torná-lo muito fácil de executar cálculos e outras operações em dados tabulares. Mas planilhas representar alguns riscos, bem como: Eles são fáceis de corromper e muito difícil de depurar. A boa notícia é que você pode usar R para fazer muitas das mesmas coisas que você costumava fazer em planilhas.

Video: 5 Coisas que você deveria ter medo de Fazer no Minecraft Pocket Edition

Adição de linha e coluna totais

Uma tarefa que você pode, freqüentemente, fazer em uma planilha está calculando linha ou coluna totais. A maneira mais fácil de fazer isso é usar as funções rowSums () e colSums (). Da mesma forma, usar rowMeans () e colMeans () meios para calcular.

Experimente-o no conjunto de dados built-in íris. Primeiro, remova a quinta coluna, porque contém texto que descreve as espécies de íris:

gt; iris.num lt; - íris [, -5]

Em seguida, calcular a soma e a média para cada coluna:

gt; colSums (iris.num) gt; colMeans (iris.num)

Estas duas funções são muito convenientes, mas você pode querer calcular alguma outra estatística para cada coluna ou linha. Não há uma maneira fácil de atravessar linhas ou colunas de uma matriz ou quadro de dados: o Aplique() função. Por exemplo, obter o mínimo de uma coluna é o mesmo que a aplicação de uma min () função para a segunda dimensão de seus dados:

Video: 10 coisas que seu corpo pode fazer e talvez você não sabia

gt; aplicar (iris.num, 2, min) gt; aplicar (iris.num, 2, max)

números de formatação

Você pode usar formato() para transformar seus números no texto bonito, pronto para impressão. Esta função tem uma série de argumentos para controlar o formato do seu resultado. Aqui estão alguns:

  • aparar: Um valor lógico. E se FALSO, ele adiciona espaços para a direita; justificar o resultado. E se VERDADE, ele suprime os espaços à esquerda.

  • dígitos: Quantos dígitos significativos de valores numéricos para mostrar.

  • nsmall: O número mínimo de dígitos depois do ponto decimal.

Além disso, você controlar o formato do ponto decimal com decimal.mark, a marca entre intervalos antes o ponto decimal com big.mark, e a marca de entre os intervalos depois de o ponto decimal com small.mark.

Por exemplo, você pode imprimir o número 12345.6789 com uma vírgula como ponto decimal, espaços como a grande marca, e pontos como a pequena marca:

gt; formato (12345.6789, dígitos = 9, decimal.mark = “”, + big.mark = ““, small.mark = ‘’, small.interval = 3) [1] ‘12 345,678.9’

Como um exemplo mais prático, para calcular o meio de algumas colunas mtcars e, em seguida, imprimir os resultados com dois dígitos depois do ponto decimal, use o seguinte:

gt; X lt; - colMeans (mtcars [, 1: 4]) gt; formato de (x, dígitos = 2, nsmall = 2) disphp mpg cil “20.09” “6,19” “230,72” “146,69”

Observe que o resultado não é mais um número, mas uma cadeia de texto. Então, cuidado ao usar o número de formatação - este deve ser o último passo no seu fluxo de trabalho de relatórios.

Se você estiver familiarizado com a programação em linguagens semelhantes ao C ou C ++, então você também pode encontrar o sprintf () função útil. Este invólucro permite que você cole o seu número formatado diretamente em uma string.

Aqui está um exemplo de conversão de números em percentagens:

gt; X lt; - SEQ (0,5, 0,55, 0,01) gt; sprintf ( “%. 1f %%”, 100 * x) [1] “50,0%” “51,0%” “52,0%” “53,0%” “54,0%” “55,0%”

Isto é o que ele faz: O primeiro argumento para sprintf () indica o formato - neste caso, % .1f %%. O argumento formato usa literais especiais que indicam que a função deve substituir este literal com uma variável e aplicar alguma formatação. Os literais sempre começam com o % símbolo. Então, neste caso, % .1f meios para formatar o primeiro valor fornecido como um valor de ponto fixo com um dígito após o ponto decimal, e %% é um literal que significa imprimir uma %.

Para formatar alguns números como moeda - neste caso, o dólar americano - uso:

gt; set.seed (1) gt; X lt; - 1000 * runif (5) gt; sprintf ( “$% 3.2f”, x) [1] “$ 265,51” “$ 372,12” “$ 572,85” “$ 908,21” “$ 201,68”

o sprintf () função dá-lhe uma forma alternativa de colar o valor de qualquer variável em uma string:

gt; coisa lt; - c ( “pão”, “cookies”) gt; preço lt; - c (2,1, 4) gt; sprintf ( “% s custo de US $% 3.2f“, coisas, preço) [1] “pão custar US $ 2,10““biscoitos custar US $ 4,00“

O que acontece aqui é que, porque você forneceu dois vetores (cada um com dois elementos) para sprintf (), seu resultado é um vetor com dois elementos. ciclos R através dos elementos e coloca-los para o sprintf () literais.

Você pode fazer tudo com colar() e formato() que você pode fazer com sprintf (), para que você realmente não precisar usá-lo. Mas quando o fizer, ele pode simplificar o seu código.

classificação de dados

Para classificar os dados em R, você usa o ordenar() ou ordem() funções.

Para classificar o quadro de dados mtcars em ordem crescente ou decrescente da coluna hp, usar:

gt; com (mtcars, mtcars [ordem (cv),]) gt; com (mtcars, mtcars [ordem (hp, diminuindo = TRUE),])

Fazer escolhas com se

Planilhas dar-lhe a capacidade de executar todos os tipos de “What if?”, Analisa. Uma maneira de fazer isso é usar o E se() função numa folha de cálculo.

R também tem o E se() função, mas é principalmente utilizado para controle de fluxo em seus scripts. Porque você normalmente querem executar um cálculo em um vector inteira em R, geralmente é mais apropriado utilizar o ifelse () função.

Aqui está um exemplo do uso ifelse () para identificar carros com alta eficiência de combustível no conjunto de dados mtcars:

gt; mtcars lt; - transformar (mtcars, + mpgClass = ifelse (mpg lt; significa (MPG),,)) GT “Baixa” “alto”; mtcars [mtcars $ mpgClass == “High”,]

Calcular totais condicionais

Outra coisa que você provavelmente fez muito em Excel está a calcular somas condicionais e conta com as funções sumif () e countif ().

Você pode fazer a mesma coisa em uma das duas maneiras em R:



Usar ifelse.

  • Basta calcular a medida de interesse em um subconjunto de seus dados.

  • Digamos que você queira calcular uma média condicional de eficiência de combustível em mtcars. Você pode fazer isso com o significar() função. Agora, para obter a eficiência de combustível para carros de ambos os lados de um limiar de 150 cavalos de potência, tente o seguinte:

    gt; com (mtcars, média (mpg)) [1] 20.09062gt; com (mtcars, média (mpg [cv lt; 150])) [1] 24.22353gt; com (mtcars, média (mpg [cv gt; = 150])) [1] 15,40667

    Contar o número de elementos em um vector é o mesmo que perguntar sobre o seu comprimento. Isto significa que a função Excel countif () tem um equivalente em R comprimento():

    gt; com (mtcars, comprimento (mpg [cv gt; 150])) [1] 13

    Transpondo colunas ou linhas

    Às vezes você precisa de transpor seus dados de linhas para colunas ou vice-versa. Em R, a função de transposição de uma matriz é t ():

    gt; X lt; - matriz (01:12, ncol = 3) gt; X [, 1] [, 2] [, 3] [1,] 1 5 9 [2], 2 6 10 [3,] 3 7 11 [4,] 4 8 12

    Para chegar a transposta de uma matriz, use t ():

    gt; t (x) [, 1] [, 2] [, 3] [, 4] [1,] 1 2 3 4 [2,] 5 6 7 8 [3,] 9 10 11 12

    Você também pode usar t () transpor quadros de dados, mas tenha cuidado quando você faz isso. O resultado de uma transposição é sempre uma matriz (ou matriz). Como os arrays sempre tem apenas um tipo de variável, como numérico ou caracteres, os tipos de variáveis ​​de seus resultados podem não ser o que você espera.

    Encontrando valores exclusivos ou duplicados

    Para identificar todos os valores exclusivos em seus dados, use o único() função. Tente encontrar os valores exclusivos de número de cilindros em mtcars:

    gt; únicos (mtcars $ Cil) [1] 6 4 8

    Às vezes você quer saber quais os valores de seus dados são duplicados. Dependendo da sua situação, as duplicatas serão válidas, mas às vezes entradas duplicadas podem indicar problemas de entrada de dados.

    A função para identificar entradas duplicadas é duplicados (). No conjunto de dados built-in íris, há uma linha duplicada na linha 143. Tente você mesmo:

    gt; dupes lt; - duplicado (íris) gt; cabeça (tolos) [1] FALSEgt FALSO FALSO FALSO FALSO FALSO; que (tolos) [1] 143gt; iris [tolos,] Sepal.Length Sepal.Width Petal.Length Petal.Width Species143 5,8 2,7 5,1 1,9 virginica

    Uma vez que o resultado de duplicados () é um vetor lógico, que você pode usá-lo como um índice para remover linhas de seus dados. Para fazer isso, use o operador de negação - o ponto de exclamação (como no !dupes):

    gt; iris gt [engana,!]; nrow (íris [! engana,]) [1] 149

    Trabalhando com tabelas de pesquisa

    Em um aplicativo de planilhas como o Excel, você pode criar tabelas de pesquisa com as funções vlookup ou uma combinação de índice e partida.

    Em R, pode ser conveniente usar merge () ou partida(). o partida() função retorna um vetor com as posições de elementos que correspondem à sua valor de pesquisa.

    Por exemplo, para encontrar a localização do elemento Toyota Corolla nos nomes de linha de mtcars, tente o seguinte:

    gt; índice lt; - jogo ( “Toyota Corolla”, rownames (mtcars)) gt; índice [1] 20GT; mtcars [índice, 1: 4] mpg cil disp hpToyota Corolla 33,9 4 71,1 65

    Trabalhando com tabelas dinâmicas

    Para tabelas simples em R, você pode usar o tapply () função para alcançar resultados semelhantes para girar tabelas no Excel. Aqui está um exemplo do uso tapply () para calcular significativo hp para carros com diferentes números de cilindros e engrenagens:

    gt; com (mtcars, tapply (hp, lista (cyl, de engrenagem), média)) 3 4 54 97,0000 76,0 102,06 116,5 175,08 107,5000 194,1667 NA 299,5

    Para tabelas ligeiramente mais complexas - ou seja, tabelas com mais de dois fatores inter-classificatórios - usar o agregar() função:

    gt; agregado (cv ~ cil + engrenagem + am, mtcars, significam) engrenagem cil amhp1 4 3 0 97,000002 6 3 0 107,500003 8 3 0 194,166674 4 4 0 78,500005 6 4 0 123,000006 4 4 1 75,166677 6 4 1 110,000008 4 5 1 102,000009 6 5 1 175.0000010 8 5 1 299,50000

    Usando o objetivo buscar e solver

    Em R, o optimizar () função fornece um mecanismo relativamente simples para optimizar funções.

    Imagine que você é o diretor de vendas de uma empresa e você precisa definir o melhor preço para o seu produto. Em outras palavras, encontrar o preço de um produto que maximiza a receita.

    Em economia, um modelo simples de estados de preços que as pessoas compram menos de um determinado produto quando o preço aumenta. Aqui está uma função muito simples que tem esse comportamento:

    gt; vendas lt; - função (preço) {100-0,5 * preço}

    receita esperada é então simplesmente o produto de preço e vendas esperadas:

    gt; receita lt; - função (preço) {preços * vendas (preço)}

    Você pode usar o curva() função para traçar funções contínuas. Isso leva uma função como entrada e produz um enredo. Tente traçar o comportamento das vendas e da receita usando o curva() função, preço de $ 50 a $ 150 variando:

    Video: 10 coisas que você não pode fazer no Minecraft

    gt; oldpar lt; - par (mfrow = c (1, 2), bty = “l”) gt; curva (de vendas, desde = 50, a = 150, XName = “preço”, principal = “Sales”) gt; curva (receitas, a partir de = 50, a = 150, XName = “preço”, principal = “receita”) gt; par (oldpar)

    Seus resultados deve ser semelhante a este.

    Um modelo de vendas e receitas previstas.
    Um modelo de vendas e receitas previstas.

    Você tem um modelo de trabalho de vendas e receitas. Você pode ver imediatamente que há um ponto de máximo rendimento. Em seguida, use a função R optimizar () para encontrar o valor dessa máxima. Usar optimizar (), você precisa dizer a ele que funcionam para usar (neste caso, receita()), Bem como o intervalo (neste caso, os preços entre 50 e 150). Por padrão, optimizar () procura por um valor mínimo, portanto, neste caso você tem que dizer a ele para procurar valor máximo:

    gt; optimizam (receitas, = intervalo de C (50, 150), = VERDADEIRO máximo) $ máxima [1] 100 $ objectivo [1] 5000

    E lá vai você. Cobrar um preço de US $ 100, e espera obter US $ 5.000 em receita.


    Publicações relacionadas