子集data.table由索引列和行

时间:2018-01-10 12:18:13

标签: r data.table

我希望通过更改列z的索引来递归地对数据表进行子集化,同时根据基于%in%的基于{{p}}的向量过滤行。

dt <- setDT(copy(diamonds))
dt <- setDT(data.frame(lapply(dt, as.character), stringsAsFactors=FALSE))
z=4
subset_by <- unique(dt[,z])[1:2]
### obviously does not work
###dt1<-dt[ z %in% subset_by]

我正在寻找最节省内存的操作来做到这一点,我确信有一种方法可以不使用colnames,但我找不到它。我看了很多帖子,其中this是最相关的

1 个答案:

答案 0 :(得分:1)

如果我们根据索引或名称进行子集化,我们可以在.SDcols

中指定它
i1 <- dt[, .I[.SD[[1]] %chin% subset_by], .SDcols = z]
dt[i1]

请注意,data.table/tbl_df/data_frame中的列的子集可以是[[$

subset_by <- unique(dt[[z]])[1:2]