tablas - seleccionar columnas en r
Seleccione múltiples columnas en data.table por sus índices numéricos (5)
¿Cómo podemos seleccionar múltiples columnas usando un vector de sus índices numéricos (posición) en data.table
?
Así es como lo haríamos con un data.frame
:
df <- data.frame(a = 1, b = 2, c = 3)
df[ , 2:3]
# b c
# 1 2 3
@Tom, muchas gracias por señalar esta solución. Funciona muy bien para mí.
Estaba buscando una forma de excluir una columna de la impresión y del ejemplo anterior. Para excluir la segunda columna puede hacer algo como esto
library(data.table)
dt <- data.table(a=1:2, b=2:3, c=3:4)
dt[,.SD,.SDcols=-2]
dt[,.SD,.SDcols=c(1,3)]
Desde v1.10.2 en adelante, también puede usar ..
dt <- data.table(a=1:2, b=2:3, c=3:4)
keep_cols = c("a", "c")
dt[, ..keep_cols]
Es un poco detallado, pero me he acostumbrado a usar la variable oculta .SD
.
b<-data.table(a=1,b=2,c=3,d=4)
b[,.SD,.SDcols=c(1:2)]
Es un poco molesto, pero no pierdes otras características de data.table (no creo), por lo que aún deberías poder usar otras funciones importantes como join tables, etc.
Para las versiones de data.table >= 1.9.8
, todo lo siguiente funciona:
library(data.table)
dt <- data.table(a = 1, b = 2, c = 3)
# select single column by index
dt[, 2]
# b
# 1: 2
# select multiple columns by index
dt[, 2:3]
# b c
# 1: 2 3
# select single column by name
dt[, "a"]
# a
# 1: 1
# select multiple columns by name
dt[, c("a", "b")]
# a b
# 1: 1 2
Para las versiones de data.table < 1.9.8
(para las cuales la selección de columna numérica requirió el uso de with = FALSE
), vea esta versión previa de esta respuesta. Ver también NEWS , Cambios en v1.9.8 / CAMBIOS POTENCIALMENTE ROTOS / punto 2.
Si desea utilizar nombres de columna para seleccionar las columnas, simplemente use .()
, Que es un alias para list()
:
library(data.table)
dt <- data.table(a = 1:2, b = 2:3, c = 3:4)
dt[ , .(b, c)] # select the columns b and c
# Result:
# b c
# 1: 2 3
# 2: 3 4