evgenii ershenko
evgenii ershenko

Reputation: 489

data.table in r : subset using column index

DT - data.table with column "A"(column index==1), "B"(column index 2), "C" and etc

for example next code makes subset DT1 which consists rows where A==2:

DT1 <- DT[A==2, ]

BUT How can I make subsets like DT1 using only column index??

for example, code like next not works :

DT1 <- DT[.SD==2, .SDcols = 1]

Upvotes: 3

Views: 7394

Answers (2)

akuiper
akuiper

Reputation: 215137

It is not recommended to use column index instead of column names as it makes your code difficult to understand and agile for any changes that could happen to your data. (See, for example, the first paragraph of the first question in the package FAQ.) However, you can subset with column index as follows:

DT = data.table(A = 1:5, B = 2:6, C = 3:7)

DT[DT[[1]] == 2]

#   A B C
#1: 2 3 4

Upvotes: 8

akrun
akrun

Reputation: 887971

We can get the row index with .I and use that to subset the DT

DT[DT[, .I[.SD==2], .SDcols = 1]]
#   A B C
#1: 2 3 4

data

DT <- data.table(A = 1:5, B = 2:6, C = 3:7)

Upvotes: 2

Related Questions