使用索引对data.table中的行进行子集化

马修

我正在寻找一种有效的方法来基于向量对data.tables进行子集化。

这不起作用:

library(data.table)
z <- data.table(mtcars)
ids <- z[wt > 3.5, "mpg"] 
z[mpg %in% ids, ] 

我希望它能工作-基于data.frames的这种行为。

ids2 <- mtcars[mtcars$wt > 3.5, "mpg"] 
mtcars[mtcars$mpg %in% ids2, ] 

如果我只输入数字,它会起作用:

z[ mpg %in% c( 14.3 , 10.4) , ]

我试过转换类:

subset(z, mpg %in% ids)
subset(z, as.numeric (mpg) %in% as.numeric( ids))
subset(z, as.character(mpg) %in% as.character( ids ))
夏普

z[wt > 3.5, "mpg"]会给你data.table回来的,你需要取消报价mpg才能得到向量:

ids <- z[wt > 3.5, mpg] 
z[mpg %in% ids]

这使:

     mpg cyl  disp  hp drat    wt  qsec vs am gear carb
 1: 14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
 2: 19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
 3: 16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
 4: 17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
 5: 15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
 6: 10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
 7: 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
 8: 14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
 9: 15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
10: 15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
11: 13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
12: 19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
13: 15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8

另外,您还可以利用data.table设置键的功能:

z <- data.table(mtcars, key = 'mpg')
ids <- z[wt > 3.5, unique(mpg)] 
z[.(ids)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 Pandas 对行进行子集化

使用grep对data.table中的子集行进行比较,比较行内容

如何在一个data.table调用中对行进行子集和排序?

R-如何使用整数索引对数据框的行进行子集化?

通过索引对行进行子集化-dt [-c(1,2,3),]与子集的等效项

如何使用基于R中最近位置的坐标对数据框中的行进行子集化

在 data.table 中,如何在 j 中使用 ifelse() 进行子集化并使用 .N 作为子集后的观察数?

使用data.table基于多个列对行进行子集设置-最快的方法

如何使用R中的字符串向量对data.table进行子集化

r中的data.table:使用列索引的子集

使用%chin%来对自动索引的data.table的字符列进行子集化会提高速度吗?

在data.table中使用grep进行子集化-unpredicatble

遍历data.tables列表时如何对行进行子集化?

如何基于函数中传递的参数对data.table对象进行子集化?

使用 group_by 对除具有特定条件的行以外的所有行进行子集化,以获取 r 中不同数量的变量

以特定顺序对data.table中的行进行排序

使用行位置向量列表对数据帧列表中的行进行子集

使用R对数据框中的行进行子集和重复

我无法以这种方式对熊猫中的行进行子集设置:df [0](或使用任何整数)

给定每个组的行索引,对data.table进行子集

如何在R中的table1函数中对行进行子集化?

使用knnImpute时在preProcess()中出现“错误:必须对具有有效下标向量的行进行子集化”

使用索引对GROUP BY查询中的行进行计数

无法对嵌套 data.frame 中的列进行子集化

如何使用data.table按组对变量的随机值进行子集化?

在 R 中使用 data.table 和 is.na(x) 在函数内进行子集化

使用二进制搜索按范围对data.table进行子集化

使用R中的矩阵对多维数组进行子集化

如何使用R根据数据框中单个列的最小值对特定列中的行进行子集