簡體   English   中英

您可以使用 .SDcols 對 data.table 中的行進行子集化嗎

[英]Can you use .SDcols to subset rows in data.table

有沒有辦法在數據表中使用 .SDcols 來選擇行。 例如,在 mtcars 中,選擇 vs、am 和 carb 都等於 1 的行。我有很多列,希望避免大量輸入。

我知道這行不通

 mtcars[ lapply( .SD == 1),  , .SDcols = c('vs, 'am', 'carb')]

我們可能需要Reduce返回單個邏輯向量並將其用作子集的索引

library(data.table)
mtcars[mtcars[, Reduce(`&`, lapply( .SD, `==`,  1)), 
         .SDcols = c('vs', 'am', 'carb')]]

-輸出

    mpg cyl  disp hp drat    wt  qsec vs am gear carb
1: 22.8   4 108.0 93 3.85 2.320 18.61  1  1    4    1
2: 32.4   4  78.7 66 4.08 2.200 19.47  1  1    4    1
3: 33.9   4  71.1 65 4.22 1.835 19.90  1  1    4    1
4: 27.3   4  79.0 66 4.08 1.935 18.90  1  1    4    1

或者使用rowSums創建邏輯向量

mtcars[mtcars[, .I[rowSums(.SD == 1) == 3], .SDcols = c('vs', 'am', 'carb') ]]

數據

mtcars <- as.data.table(mtcars)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM