简体   繁体   中英

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]

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

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM