Trucos simples para #rstats

En mi cuenta de twitter suelo poner algunos trucos sencillos de R, cosas que me surgen cuando estoy trabajando y que no me cuesta compartir en 2 minutos, por si puedo ayudar a alguien. Me acabo de dar cuenta que de verdad son útiles y que tenerlos en twitter desperdigados es un problema, así que he pensado en recopilarlos en una entrada del blog para que sea más sencillo buscarlos (incluso para mi). Aquí van algunos de esos trucos:

Pasar los datos de un data frame al portapapeles, útil cuando quieres mover datos de R a Excel sin complicaciones:

 write.table(borra,"clipboard", sep="\t", dec=",", row.names = F)

Pasar el nombre de los campos de un data frame al clipboard (hila con el anterior), útil cuando trabajas con un editor de texto o alguna hoja de cálculo para automatizar código:

 write.table(colnames(DF),"clipboard", sep="\t", dec=",", row.names = F)

Poner formato 00000 propio códigos postales:

cp <- c(8080,29001)
cp <- sprintf("%05d", cp)

El mejor subset para H2O:

 df.hex[df.hex$campo > 0,]

Texto a fecha en R:

df$fecha= as.Date (df$fecha, "%d/%m/%Y")

Identificar registros repetidos en un data frame, crea un data frame con los registros duplicados en una línea de código de dplyr:

 repetidos <- df %>% group_by(campo_ID) %>%
 summarise(repetido = n()) %>% filter(repetido>1)

Mi preferida y el motivo de la entrada, tramificar una variable cuantitativa en n grupos:

 grupos = 10
df <- df %>% arrange(campo) %>% 
mutate(campo_tramos= as.factor(ceiling((row_number()/n())*grupos)))

Transformar nulos a 0 en 20 caracteres:

df[is.na(df$V1)] <- 0

Transformar números separados por coma en formato texto a formato numérico:

df$numero <- as.numeric(sub(",",".",df$texto))

Todos los factores de mi data frame de R a carácter para evitar algún lío, uso de lapply:

df <- data.frame(lapply(df, as.character), stringsAsFactors=FALSE)

Espero que esta entrada pueda seguir creciendo, son tonterías (mis tonterías) y las tengo centralizadas en una sola entrada.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *