【发布时间】:2019-09-03 21:38:27
【问题描述】:
我在 R 中有一个 data.table,我需要根据某些条件对其进行子集化
dt <- data.table(X_ID=c(1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4), Y_ID=c(1,2,3,4,5,6, 1,2,3,4,5,6, 1,2,3,4,5,6, 1,2,3,4,5,6), Value1=c(6,4,8,9,10,12,5,7,8,3,4,8,7,3,9,7,4,12,45,3,2,1,2,5),Value2=c(6,6,8,9,10,12,5,4,8,3,4,8,7,5,9,7,4,12,45,1,2,1,2,5))
当 Y_ID 等于 2 时,我想保留值 1 大于值 2 的所有 X_ID。例如,对于 X_ID=1,当 Y_ID=2 时,值 1 大于值 2。在这种情况下,我想保留所有 X_ID=1 的行。
我目前正在使用过滤器功能(如下所示)来获得解决方案。
dt2 <- filter(dt,is.na(match(dt$X_ID,filter(dt, Y_ID==2&Value1<Value2)$X_ID)))
但是有没有办法让这段代码更具可读性?或者使用 data.table 原生的东西来对我需要的行进行子集化?
【问题讨论】:
标签: r data.table subset