[R-es] Crear una función
Mauricio Monsalvo
m.monsalvo en gmail.com
Mie Mar 15 11:21:13 CET 2017
Hola.
Estoy intentando crear una función pero no logro que termine de cerrar y mi
manejo no permite que el google me ayude...
n.reg.dep <- function(x, y) {
etiqueta <- str_replace(nombres[Variable == y, Descripcion], "[ ]", "")
tabla <- datos[, .N, by = .(etiqueta = A3a)] #
tabla <- tabla[, Porc := round(N/sum(N)*100,1)] # %
tabla[, PorcAc := cumsum(Porc)]
# Regiones
tabla.1 <- datos[, .N, by = .(etiqueta = x, Region)]
tabla.1[, Porc := round(N/sum(N)*100,1), by =.(Region)]
tabla.1 <- spread(tabla.1[, .(etiqueta, Region, Porc)], key =
Region, value = Porc)
tabla.reg <- left_join(tabla, tabla.1)
# Depdendencia
tabla.1 <- datos[, .N, by = .(etiqueta = x, Dependencia = B2a)]
tabla.1[, Porc := round(N/sum(N)*100,1), by =.(Dependencia)] # %
por Dependencia
tabla.1 <- na.omit(tabla.1)
tabla.1 <- spread(tabla.1[, .(etiqueta, Dependencia, Porc)], key
= Dependencia, value = Porc)
tabla.dep <- left_join(tabla, tabla.1)
tabla <- left_join(tabla.reg, tabla.dep)
return(tabla)
}
n.reg.dep(datos$A3a, "A3a")
n.reg.dep(datos$A3a)
Si bien anda y el resultado es bastante parecido al que espero, no puedo
hacer que las tablas se llamen como quisiera porque el factor "etiqueta"
que debería indicar el primer nombre de la variable no es consdierado, como
podrán ver.
Si correo el código para la variable, resulta algo como:
> tabla
Sexo N Porc PorcAc NEA NOA Nacionales Provinciales Municipales
Comunitarios Religiosos Privados
1 Mujer 270 86.8 86.8 92.7 84.2 77.8 89.6 83.8
78.9 90 100
2 Varon 40 12.9 99.7 7.3 15.3 22.2 10.4 16.2
19.3 10 NA
3 <NA> 1 0.3 100.0 NA 0.5 NA NA NA
NA NA NA
Pero como tengo que hacerlo muchas veces, necesitaría poder escribir esta
(mi primera) función. Ahorraría mucho tiempo, además de asegurarme que no
pifio en el copiar y pegar y reemplazar.
Adjunto datos de prueba y una tabla con los las variables y sus
variable.labels (nombres).
Se usa:
library(data.table)
library(tidyverse) # library(dplyr)
library(stringr)
Muchas gracias.
Saludos.
--
Mauricio
[[alternative HTML version deleted]]
Más información sobre la lista de distribución R-help-es