gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 09:32:51 24 4
gpt4 key购买 nike

我正在寻找一种基于向量对 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)]

关于r - 使用索引对 data.table 中的行进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50412662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com