Как мы можем выбрать несколько столбцов, используя вектор их числовых индексов (позиции) в data.table
?
Так мы будем делать с data.frame
:
df <- data.frame(a = 1, b = 2, c = 3)
df[ , 2:3]
# b c
# 1 2 3
Как мы можем выбрать несколько столбцов, используя вектор их числовых индексов (позиции) в data.table
?
Так мы будем делать с data.frame
:
df <- data.frame(a = 1, b = 2, c = 3)
df[ , 2:3]
# b c
# 1 2 3
Для версий data.table >= 1.9.8
выполняется следующее:
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
Для версий data.table < 1.9.8
(для которых для выбора числового столбца требуется использование with = FALSE
), см. эту предыдущую версию этого ответа. См. Также NEWS, Изменения в v1.9.8/ПОТЕНЦИАЛЬНО РАЗРЕШЕНИЕ ИЗМЕНЕНИЙ/пункт 2.
Если вы хотите использовать имена столбцов для выбора столбцов, просто используйте .()
, который является псевдонимом для 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
Это немного подробный, но я привык использовать скрытую переменную .SD
.
b<-data.table(a=1,b=2,c=3,d=4)
b[,.SD,.SDcols=c(1:2)]
Это немного хлопот, но вы не потеряете другие функции data.table(я не думаю), поэтому вы все равно должны использовать другие важные функции, такие как таблицы соединений и т.д.
Начиная с версии v.1.10.2, вы также можете использовать ..
dt <- data.table(a=1:2, b=2:3, c=3:4)
keep_cols = c("a", "c")
dt[, ..keep_cols]
@Tom, большое спасибо за указание этого решения. Это отлично работает для меня.
Я искал способ просто исключить один столбец из печати и из приведенного выше примера. Чтобы исключить второй столбец, вы можете сделать что-то вроде этого
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)]
вы также можете рассмотреть пакет dplyr. Он позволяет манипулировать кадром данных с использованием более простой структуры. пример будет использовать команду select, которую я могу захватить по имени только переменные в кадре данных, которые я хочу
выберите (.data, var1, var7, var12)