filtros - seleccionar columnas en r
dplyr: seleccione nombres de columnas que contengan espacios en blanco (2)
df <- structure(list(`a a` = 1:3, `a b` = 2:4), .Names = c("a a", "a b"
), row.names = c(NA, -3L), class = "data.frame")
y los datos se ven como
a a a b
1 1 2
2 2 3
3 3 4
Siguiente llamada para seleccionar
select(df, ''a a'')
da
Error in abs(ind[ind < 0]) :
non-numeric argument to mathematical function
¿Cómo puedo seleccionar "aa" y / o cambiarle el nombre a algo sin espacio usando select ? Sé los siguientes enfoques:
-
names(df)[1] <- "a" -
select(df, a=1) -
select(df, ends_with("a"))
pero si estoy trabajando en un gran conjunto de datos, ¿cómo puedo obtener una coincidencia exacta sin conocer el número de índice o nombres de columna similares?
Algunas alternativas a los backticks, bueno como dplyr 0.5.0, la versión actual a partir de este escrito.
Si está intentando seleccionar mediante programación un argumento como una columna y no desea cambiar el nombre ni hacer algo como paste / hacer sprintf el nombre de la columna en backticks, puede usar as.name junto con la versión de evaluación no estándar de select , que es select_ :
dplyr::select_(df, as.name("a a"))
Muchas de las funciones dplyr tienen versiones no estándar. En el caso de select específicamente, también puede usar la versión estándar junto con el asistente de selección one_of . Ver ?dplyr::select_helpers para la documentación:
dplyr::select(df, dplyr::one_of("a a"))
Usted puede select la variable usando backticks ` .
select(df, `a a`)
# a a
# 1 1
# 2 2
# 3 3
Sin embargo, si su objetivo principal es cambiar el nombre de la columna, puede usar rename en el paquete plyr , en el que puede usar tanto "" como `` .
rename(df, replace = c("a a" = "a"))
rename(df, replace = c(`a a` = "a"))
O en la base R:
names(df)[names(df) == "a a"] <- "a"
Para una descripción más completa sobre el uso de varias citas, vea ?Quotes . La sección ''Nombres e identificadores'' es especialmente relevante aquí:
se pueden usar otros nombres [sintácticamente inválidos] siempre que estén entre comillas. La cita preferida es el backtick ".
Ver también ?make.names sobre nombres válidos.
Ver también esta publicación sobre el cambio de nombre en dplyr