Tabla de contenido:
- Agregar totales de fila y columna
- trim
- Otra cosa que probablemente hizo mucho en Excel es calcular sumas condicionales y cuenta con las funciones sumif () y countif ().
- Supongamos que quiere calcular una media condicional de eficiencia de combustible en mtcars. Usted hace esto con la función mean (). Ahora, para obtener la eficiencia de combustible para los autos en cualquier lado de un umbral de 150 caballos de fuerza, intente lo siguiente: >> con (mtcars, mean (mpg)) [1] 20. 09062> con (mtcars, mean (mpg [ hp con (mtcars, mean (mpg [hp> = 150])) [1] 15. 40667
- También puede usar t () para transponer marcos de datos, pero tenga cuidado cuando haga esto. El resultado de una transposición es siempre una matriz (o matriz). Porque las matrices siempre tienen solo un tipo de variable, como numérico o de carácter, los tipos de variables de sus resultados pueden no ser los esperados.
- Por ejemplo, para encontrar la ubicación del elemento "Toyota Corolla" en los nombres de las filas de mtcars, intente lo siguiente: >> index index [1] 20> mtcars [index, 1: 4] mpg cyl disp HP Toyota Corolla 33. 9 4 71. 1 65
- Imagine que es el director de ventas de una empresa y necesita establecer el mejor precio para su producto. En otras palabras, encuentre el precio de un producto que maximice los ingresos.
Video: Curso Excel 2013: Crear Fórmulas con Referencias a Celdas de otras Hojas y otros Libros. 2024
La hoja de cálculo es probablemente una de las aplicaciones de PC más utilizadas, y por una buena razón: las hojas de cálculo facilitan la realización de cálculos y otras operaciones en tablas. datos. Pero las hojas de cálculo también presentan algunos riesgos: son fáciles de corromper y muy difíciles de depurar. La buena noticia es que puedes usar R para hacer muchas de las mismas cosas que solías hacer en las hojas de cálculo.
Agregar totales de fila y columna
Una tarea que puede hacer con frecuencia en una hoja de cálculo es calcular los totales de fila o columna. La forma más fácil de hacerlo es usar las funciones rowSums () y colSums (). Del mismo modo, use rowMeans () y colMeans () para calcular los promedios.
Pruébelo en el iris del conjunto de datos incorporado. Primero, elimine la quinta columna, porque contiene texto que describe las especies de iris: >> iris. num <- iris [-5]
Luego, calcule la suma y la media de cada columna:
Números de formateo
Puede usar format () para convertir sus números en texto bonito, listo para imprimir. Esta función toma una serie de argumentos para controlar el formato de su resultado. Aquí hay algunos:
trim
:Un valor lógico. Si es FALSO, agrega espacios para justificar a la derecha el resultado. Si es VERDADERO, suprime los espacios iniciales.
-
dígitos : ¿Cuántos dígitos significativos de valores numéricos mostrar?
-
nsmall : El número mínimo de dígitos después del punto decimal.
-
Además, usted controla el formato del punto decimal con decimal. marca, la marca entre los intervalos antes de el punto decimal con grande. mark, y la marca entre intervalos
después de el punto decimal con small. marca. Por ejemplo, puede imprimir el número 12345. 6789 con una coma como punto decimal, espacios como la marca grande y puntos como la marca pequeña: formato >> (12345. 6789, dígitos = 9, decimal. mark = ",", + big. mark = "", small. mark = ".", small. interval = 3) [1] "12 345, 678. 9" Como ejemplo más práctico, para calcular el medio de algunas columnas en mtcars y luego imprimir los resultados con dos dígitos después del punto decimal, use lo siguiente: >> formato x (x, dígitos = 2, nsmall = 2) mpg cyl disp hp "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 use el formato de número: este debería ser el último paso en su flujo de trabajo de informes.
Si está familiarizado con la programación en lenguajes similares a C o C ++, entonces también puede ser útil la función sprintf (). Este contenedor le permite pegar su número formateado directamente en una cadena.
Aquí hay un ejemplo de convertir números en porcentajes: >> x 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 para 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%. Entonces, en este caso,%. 1f significa 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 imprimir un%.
Para formatear algunos números como moneda, en este caso, U. S. dollars, use: >> set. seed (1)> x sprintf ("$% 3. 2f", x) [1] "$ 265. 51" "$ 372. 12" "$ 572. 85" "$ 908. 21" "$ 201. 68 "
La función sprintf () te da una forma alternativa de pegar el valor de cualquier variable en una cadena: >> cosas precio sprintf ("% s cost $% 3. 2f ", cosas, precio) [1] "El pan cuesta $ 2.10" "las cookies cuestan $ 4. 00"
Lo que sucede aquí es que, como usted suministró dos vectores (cada uno con dos elementos) a sprintf (), su resultado es un vector con dos elementos. R recorre los elementos y los coloca en los literales sprintf ().
Puedes hacer todo con paste () y format () que puedes hacer con sprintf (), por lo que realmente no necesitas usarlo. Pero cuando lo haces, puede simplificar tu código.
Ordenando datos
Para ordenar datos en R, usa las funciones ordenar () u ordenar ().
Para ordenar los mtcars del marco de datos en orden creciente o decreciente de la columna hp, use: >> con (mtcars, mtcars [orden (hp),])> con (mtcars, mtcars [orden (hp, decreciente) = VERDADERO),])
Tomar decisiones con if
Las hojas de cálculo le dan la capacidad de realizar todo tipo de "¿Qué pasa si? "Análisis. Una forma de hacerlo es usar la función if () en una hoja de cálculo.
R también tiene la función if (), pero se usa principalmente para control de flujo en tus scripts. Como normalmente desea realizar un cálculo en un vector completo en R, generalmente es más apropiado usar la función ifelse ().
Aquí hay un ejemplo del uso de ifelse () para identificar automóviles con alta eficiencia de combustible en el conjunto de datos de mtcars: >> mtcars <- transform (mtcars, + mpgClass = ifelse (mtcars en mpg [mtcars $ mpgClass == "High"],]
Cálculo de totales condicionales
Otra cosa que probablemente hizo mucho en Excel es calcular sumas condicionales y cuenta con las funciones sumif () y countif ().
Puede hacer lo mismo en una de dos formas en R:
Use ifelse.
Simplemente calcule la medida del interés en un subconjunto de sus datos.
Supongamos que quiere calcular una media condicional de eficiencia de combustible en mtcars. Usted hace esto con la función mean (). Ahora, para obtener la eficiencia de combustible para los autos en cualquier lado de un umbral de 150 caballos de fuerza, intente lo siguiente: >> con (mtcars, mean (mpg)) [1] 20. 09062> con (mtcars, mean (mpg [hp con (mtcars, mean (mpg [hp> = 150])) [1] 15. 40667
Contar el número de elementos en un vector es lo mismo que preguntar sobre su longitud. Esto significa que la función Excel countif () tiene una R equivalente en longitud (): >> con (mtcars, longitud (mpg [hp> 150])) [1] 13
Transposición de columnas o filas
A veces es necesario transponer sus datos de filas a columnas o viceversa. En R, la función para transponer una matriz es t (): >> xx [1] [2] [3] [1,] 1 5 9 [2,] 2 6 10 [3,] 3 7 11 [4,] 4 8 12
Para obtener la transposición de una matriz, use t (): >> t (x) [1] [2] [3] [4] [1,] 1 2 3 4 [2,] 5 6 7 8 [3,] 9 10 11 12
También puede usar t () para transponer marcos de datos, pero tenga cuidado cuando haga esto. El resultado de una transposición es siempre una matriz (o matriz). Porque las matrices siempre tienen solo un tipo de variable, como numérico o de carácter, los tipos de variables de sus resultados pueden no ser los esperados.
Encontrar valores únicos o duplicados
Para identificar todos los valores únicos en sus datos, use la función unique (). Intente encontrar los valores únicos de la cantidad de cilindros en mtcars: >> unique (mtcars $ cyl) [1] 6 4 8
-
A veces querrá saber qué valores de sus datos son duplicados. Dependiendo de su situación, esos duplicados serán válidos, pero a veces las entradas duplicadas pueden indicar problemas de entrada de datos.
-
La función para identificar entradas duplicadas está duplicada (). En el iris del conjunto de datos incorporado, hay una fila duplicada en la línea 143. Pruébelo usted mismo: >> engaña a la cabeza (engaña) [1] FALSO FALSO FALSO FALSO FALSO FALSO> que (engaña) [1] 143> iris [engaña,] Sepal. Longitud Sepal. Ancho Pétalo. Longitud de pétalo. Ancho Especies 143 5. 8 2. 7 5. 1 1. 9 virginica
Debido a que el resultado de duplicated () es un vector lógico, puede usarlo como índice para eliminar filas de sus datos. Para hacer esto, use el operador de negación - el signo de exclamación (como en! Dupes): >> iris [! dupes,]> nrow (iris [! dupes,]) [1] 149
Trabajar con tablas de búsqueda
En una aplicación de hoja de cálculo como Excel, puede crear tablas de búsqueda con las funciones vlookup o una combinación de índice y coincidencia.
En R, puede ser conveniente usar merge () o match (). La función match () devuelve un vector con las posiciones de los elementos que coinciden con 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: >> index index [1] 20> mtcars [index, 1: 4] mpg cyl disp HP Toyota Corolla 33. 9 4 71. 1 65
Trabajar con tablas dinámicas
Para tablas simples en R, puede usar la función tapply () para lograr resultados similares a tablas dinámicas en Excel.Aquí hay un ejemplo del uso de tapply () para calcular la hp media para automóviles con diferentes números de cilindros y engranajes: >> con (mtcars, tapply (hp, list (cyl, gear), mean)) 3 4 5 4 97. 0000 76. 0 102. 0 6 107. 5000 116. 5 175. 0 8 194. 1667 NA 299. 5
Para tablas un poco más complejas, es decir, tablas con más de dos factores de clasificación cruzada, utilice el agregado () función: >> agregado (hp ~ cyl + gear + am, mtcars, mean) cyl gear am hp 1 4 3 0 97. 00000 2 6 3 0 107. 50000 3 8 3 0 194. 16667 4 4 4 0 78. 50000 5 6 4 0 123. 00000 6 4 4 1 75. 16667 7 6 4 1 110. 00000 8 4 5 1 102. 00000 9 6 5 1 175. 00000 10 8 5 1 299. 50000
Uso el objetivo busca y soluciona
En R, la función optimize () proporciona un mecanismo bastante simple para optimizar funciones.
Imagine que es el director de ventas de una empresa y necesita establecer el mejor precio para su producto. En otras palabras, encuentre el precio de un producto que maximice los ingresos.
En economía, un modelo simple de fijación de precios establece que las personas compran menos de un producto dado cuando el precio aumenta. Aquí hay una función muy simple que tiene este comportamiento: >> ventas <- función (precio) {100 - 0. 5 * precio}
El ingreso esperado es simplemente el producto del precio y las ventas esperadas: >> ingresos <- función (precio) {precio * ventas (precio)}
Puede usar la función de curva () para trazar funciones continuas. Esto toma una función como entrada y produce un diagrama. Trate de graficar el comportamiento de ventas e ingresos usando la función curve (), variando el precio de $ 50 a $ 150: >> curva oldpar (ventas, desde = 50, hasta = 150, xname = "precio", main = "Ventas ")> Curve (revenue, from = 50, to = 150, xname =" price ", main =" Revenue ")> par (oldpar)
Sus resultados deben ser similares a esto.
Un modelo de ventas e ingresos esperados.
Tiene un modelo funcional de ventas e ingresos. Puede ver inmediatamente que hay un punto de máximo ingreso. Luego, use la función R optimize () para encontrar el valor de ese máximo. Para utilizar optimize (), debe indicarle qué función usar (en este caso, revenue ()), así como el intervalo (en este caso, precios entre 50 y 150). De forma predeterminada, optimize () busca un valor mínimo, por lo que en este caso debe indicarle que busque el valor máximo: >> optimize (revenue, interval = c (50, 150), maximum = TRUE) $ maximum [1] 100 $ objetivo [1] 5000
Y ahí tienes. Cobra un precio de $ 100 y espera obtener $ 5,000 en ingresos.