una tablas tabla seleccionar filtrar filas eliminar ejemplos datos data crear contar como columnas r data.table

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