10 Cosas que puede hacer en r que le han hecho en microsoft excel

La hoja de cálculo es probablemente una de las aplicaciones de PC más utilizados - y por una buena razón: Las hojas de cálculo hacen que sea muy fácil de realizar cálculos y otras operaciones sobre los datos tabulares. Sin embargo, las hojas de cálculo plantean algunos riesgos, así: Son fáciles de corromper y muy difícil de depurar. La buena noticia es que se puede utilizar R para hacer muchas de las mismas cosas que solía hacer en hojas de cálculo.

Adición de fila y columna totales

Una de las tareas que puede hacer con frecuencia en una hoja de cálculo es el cálculo de los totales de fila o columna. La forma más sencilla de hacerlo es utilizar las funciones rowSums () y colSums (). Del mismo modo, el uso rowMeans () y colMeans () medios para calcular.

Pruébalo en el conjunto de datos incorporada iris. En primer lugar, retire la quinta columna, ya que contiene texto que describe las especies de iris:

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

A continuación, calcular la suma y la media para cada columna:

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

Estas dos funciones son muy convenientes, pero es posible que desee para calcular alguna otra estadística para cada columna o fila. Hay una manera fácil de atravesar las filas o columnas de una matriz o trama de datos: la aplicar() función. Por ejemplo, para obtener el mínimo de una columna es la misma que la aplicación de una min () funcionar a la segunda dimensión de los datos:

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

formato numéricos

Puedes usar formato() para convertir sus números en el texto bastante, lista para imprimir. Esta función toma una serie de argumentos para controlar el formato de su resultado. Aquí están algunos:

  • recortar: Un valor lógico. Si FALSO, agrega espacios a la derecha; justificar el resultado. Si CIERTO, que suprime los espacios iniciales.

  • dígitos: ¿Cuántos dígitos significativos de los valores numéricos para mostrar.

  • nsmall: El número mínimo de dígitos después del punto decimal.

Además, permite controlar el formato del punto decimal con decimal.mark, la marca entre los intervalos antes de el punto decimal con big.mark, y la marca entre los intervalos después el punto decimal con small.mark.

Video: 10 cosas que no sabías que puedes hacer con el cuadro de nombres

Por ejemplo, puede imprimir el número 12345.6789 con una coma como separador decimal, espacios como la marca grande, y los puntos como la marca pequeña:

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

Como un ejemplo más práctico, para el cálculo de los medios de algunas columnas mtcars y luego imprimir los resultados con dos dígitos después del punto decimal, utilizar lo siguiente:

gt; x lt; - colMeans (mtcars [, 1: 4]) gt; formato (x, dígitos = 2, nsmall = 2) disphp mpg Cil “20,09” “6,19” “230.72” “146.69”

Observe que el resultado ya no es un número, sino una cadena de texto. Por lo tanto, tenga cuidado cuando se utiliza el formato de número - esto debe ser el último paso en el flujo de trabajo de informes.

Si está familiarizado con la programación en lenguajes similares a C o C ++, entonces también se puede encontrar el sprintf () función útil. Este envoltorio le permite pegar el número formateado directamente en una cadena.

Aquí está un ejemplo de la conversión de números en porcentajes:

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

Esto es lo que hace: El primer argumento sprintf () indica el formato - en este caso, % .1f %%. El argumento de formato utiliza literales especiales que indican que la función debe reemplazar este literal con una variable y aplicar algún formato. Los literales siempre comienzan con el % símbolo. Por lo tanto, en este caso, % .1f medios para formatear el primer valor suministrado como un valor de punto fijo con un dígito después del punto decimal, y %% es un literal que significa una impresión %.

Para dar formato a algunos números como moneda - en este caso, dólares estadounidenses - utilización:

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”

los sprintf () función le proporciona una forma alternativa de pegar el valor de cualquier variable en una cadena:

gt; cosas lt; - c ( “pan”, “cookies”) gt; precio lt; - c (2,1, 4) gt; sprintf ( “% s costo $% 3.2f“, las cosas, los precios) [1] “pan cuesta $ 2.10““galletas cuestan $ 4.00“

Lo que sucede aquí es que, debido a que proporcionó dos vectores (cada uno con dos elementos a) sprintf (), el resultado es un vector con dos elementos. ciclos de R a través de los elementos y los coloca en el sprintf () literales.

Usted puede hacer todo con pegar() y formato() que se puede hacer con sprintf (), por lo que en realidad no siempre hay que usarla. Pero cuando lo hace, se puede simplificar el código.

clasificación de datos

Para ordenar los datos en R, se utiliza el ordenar() o orden() funciones.

Para ordenar la trama de datos mtcars en el aumento o la disminución de orden de la columna CV, utilizar:

gt; con (mtcars, mtcars [orden (hp),]) gt; con (mtcars, mtcars [orden (hp, disminuyendo = TRUE),])

Tomar decisiones con si

Las hojas de cálculo le ofrecen la posibilidad de realizar todo tipo de “¿Qué pasa si?” Análisis. Una forma de hacer esto es utilizar el Si() función en una hoja de cálculo.

R también tiene la Si() función, pero se utiliza sobre todo para el control de flujo en los scripts. Debido a que normalmente se desea realizar un cálculo en un vector entero en R, por lo general es más apropiado utilizar el ifelse () función.

He aquí un ejemplo del uso de ifelse () para identificar los coches con alta eficiencia de combustible en el conjunto de datos mtcars:

gt; mtcars lt; - transformar (mtcars, + mpgClass = ifelse (mpg lt; significar (mpg),,)) gt “Bajo” “Alto”; mtcars [mtcars $ mpgClass == “alta”,]

Calcular los totales condicionales

Otra cosa que probablemente lo hizo mucho en Excel es el cálculo de sumas condicionales y cuenta con las funciones cálculo SUMAR.SI () y countif ().

Puede hacer lo mismo en una de dos maneras en R:

Utilizar ifelsmi.

  • Basta con calcular la medida de los intereses de un subconjunto de sus datos.

  • Digamos que quiere calcular una media condicional de la eficiencia del combustible en mtcars. Esto se hace con el media() función. Ahora, para conseguir la eficiencia del combustible para los coches a ambos lados de un umbral de 150 caballos de fuerza, intente lo siguiente:

    gt; con (mtcars, media (MPG)) [1] 20.09062gt; con (mtcars, media (mpg [hp lt; 150])) [1] 24.22353gt; con (mtcars, media (mpg [hp gt; = 150])) [1] 15.40667

    Contar el número de elementos en un vector es el mismo que preguntar acerca de su longitud. Esto significa que la función de Excel countif () tiene un R equivalente en longitud():

    gt; con (mtcars, longitud (mpg [hp gt; 150])) [1] 13

    La transposición de columnas o filas

    A veces es necesario ajustar la transposición de datos de filas a columnas o viceversa. En R, la función de transponer una matriz es t ():

    gt; x lt; - matriz (1: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 obtener la traspuesta de una matriz, el uso t ():

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

    También puede utilizar t () transponer tramas de datos, pero tenga cuidado al hacer esto. El resultado de una transposición es siempre una matriz (o matriz). Debido a que las matrices siempre tienen un solo tipo de variable, como numérico o carácter, los tipos variables de sus resultados pueden no ser los esperados.

    Encontrar valores únicos o duplicados

    Para identificar todos los valores únicos en sus datos, utilice el único() función. Trate de encontrar los valores únicos de número de cilindros en mtcars:

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

    A veces se quiere saber qué valores de los datos son duplicados. Dependiendo de su situación, los duplicados serán válidas, pero a veces las entradas duplicadas pueden indicar problemas de entrada de datos.

    La función de identificar las entradas duplicadas es duplicada (). En el conjunto de datos incorporada iris, hay una fila duplicada en la línea 143. Trate usted mismo:

    gt; dupes lt; - duplicada (iris) gt; cabeza (dupes) [1] FALSEgt FALSE FALSE FALSE FALSE FALSE; que (dupes) [1] 143gt; iris [dupes,] Sepal.Length Sepal.Width Petal.Length Petal.Width Species143 5,8 2,7 5,1 1,9 virginica

    Debido a que el resultado de duplicada () es un vector lógico, se puede usar como un índice para eliminar las filas de sus datos. Para ello, utilice el operador de negación - el signo de exclamación (como en !dupes):

    gt; iris gt [dupes,!]; nRow (iris [! incautos,]) [1] 149

    Trabajar con tablas de búsqueda

    En una aplicación de hoja de cálculo como Excel, puede crear tablas de consulta con las funciones CONSULV o una combinación de índice y partido.

    En R, puede ser conveniente utilizar unir() o partido(). los partido() función devuelve un vector con las posiciones de los elementos que responden a su valor de búsqueda.

    Por ejemplo, para encontrar la ubicación del elemento Toyota Corolla en los nombres de las filas de mtcars, intente lo siguiente:

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

    Trabajar con tablas dinámicas

    Para las tablas simples en R, se puede utilizar el tapply () función para lograr resultados similares a las tablas dinámicas en Excel. He aquí un ejemplo del uso de tapply () para calcular media CV para vehículos con diferentes números de cilindros y engranajes:

    gt; con (mtcars, tapply (hp, lista (cyl, engranajes), media)) 3 4 54 97,0000 76,0 102,06 107,5000 116,5 175,08 194,1667 NA 299,5

    Para las tablas un poco más complejas - es decir, las tablas con más de dos factores de clasificación cruzada - utilizar el agregar() función:

    Video: 05-Excel avanzado: Funciones sumar.si, promedio.si y contar.si

    gt; agregada (hp ~ cil + engranaje + am, mtcars, significan) amhp1 engranaje Cil 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 el objetivo de buscar y solucionador

    En R, la optimizar() función proporciona un mecanismo bastante sencillo para la optimización de funciones.

    Imagínese que usted es el director de ventas de una empresa y tiene que establecer el mejor precio para su producto. En otras palabras, encontrar el precio de un producto que maximiza los ingresos.

    En economía, un modelo simple de los estados de precios que la gente compra menos de un determinado producto, cuando los aumentos de precios. He aquí una función muy simple que tiene este comportamiento:

    gt; ventas lt; - función (precio) {100 - 0.5 * price}

    ingresos esperados es simplemente el producto de precio y ventas esperadas:

    gt; ingresos lt; - función (precio) {* precio de venta (precio)}

    Se puede utilizar el curva() función para trazar funciones continuas. Esta toma una función como entrada y produce una trama. Tratar de trazar el comportamiento de las ventas y los ingresos mediante el curva() función, variando el precio de $ 50 a $ 150:

    Video: Curiosidades de Microsoft Excel

    gt; oldpar lt; - Par (mfrow = c (1, 2), bty = “l”) gt; curva (ventas, de = 50, a = 150, XName = “precio”, principal = “Sales”) gt; curva (ingresos, de = 50, a = 150, XName = “precio”, main = “Ingresos”) gt; par (oldpar)

    Sus resultados deben ser similares a este.

    Un modelo de ventas y los ingresos esperados.
    Un modelo de ventas y los ingresos esperados.

    Usted tiene un modelo de trabajo de ventas y los ingresos. Se puede ver de inmediato que hay un punto de ingreso máximo. A continuación, utilice la función R optimizar() para encontrar el valor de dicho máximo. Usar optimizar(), Usted necesita decir que qué función debe utilizar (en este caso, ingresos()), Así como el intervalo (en este caso, los precios entre 50 y 150). Por defecto, optimizar() Busca un valor mínimo, por lo que en este caso se tiene que decirle a buscar valor máximo:

    gt; Optimizar (ingresos, = intervalo de c (50, 150), máximo = TRUE) $ máximo [1] 100 $ objetivo [1] 5000

    Y hay que ir. Cobrar un precio de $ 100, y esperar obtener $ 5,000 en ingresos.

    Artículos Relacionados