Recabamos en distintos sitios para así traerte la solución para tu duda, si tienes preguntas déjanos la duda y responderemos con gusto, porque estamos para ayudarte.
Solución:
Si sus columnas vacías son De Verdad columnas de caracteres vacías, algo como lo siguiente debería funcionar. Deberá modificarse si sus columnas de caracteres “vacías” incluyen, por ejemplo, espacios.
Data de muestra:
mydf <- data.frame(
A = c("a", "b"),
B = c("y", ""),
C = c("", ""),
D = c("", ""),
E = c("", "z")
)
mydf
# A B C D E
# 1 a y
# 2 b z
Identificar y eliminar las columnas "vacías".
mydf[!sapply(mydf, function(x) all(x == ""))]
# A B E
# 1 a y
# 2 b z
Alternativamente, según lo recomendado por @Roland:
> mydf[, colSums(mydf != "") != 0]
A B E
1 a y
2 b z
Puede hacer cualquiera de las siguientes cosas:
emptycols <- sapply(df, function (k) all(is.na(k)))
df <- df[!emptycols]
o:
emptycols <- colSums(is.na(df)) == nrow(df)
df <- df[!emptycols]
Si por vacío quiere decir que están ""
el segundo enfoque se puede adaptar así:
emptycols <- colSums(df == "") == nrow(df)
Si está hablando de columnas donde todos los valores son NA
utilizar remove_empty("cols")
del paquete del conserje.
Si tiene vectores de caracteres donde cada valor es el vacío string ""
primero puede convertir esos valores a NA
a lo largo de su data.frame con na_if
del paquete dplyr:
dat <- data.frame(
x = c("a", "b", "c"),
y = c("", "", ""),
z = c(NA, NA, NA),
stringsAsFactors = FALSE
)
dat
#> x y z
#> 1 a NA
#> 2 b NA
#> 3 c NA
library(dplyr)
library(janitor)
dat %>%
mutate_all(funs(na_if(., ""))) %>%
remove_empty("cols")
#> x
#> 1 a
#> 2 b
#> 3 c
Si eres capaz, puedes dejar una crónica acerca de qué le añadirías a esta sección.