studio seleccionar filtros filas eliminar datos columnas agrupar r dataframe dplyr

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:

  1. names(df)[1] <- "a"
  2. select(df, a=1)
  3. 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