【发布时间】:2021-11-30 03:01:15
【问题描述】:
我有一个表,其中包含两列介于 0 和 1 之间的值。例如:
set.seed(123)
table <- data.table(value1 = runif(10),
value2 = runif(10))
table
value1 value2
0.2875775 0.95683335
0.7883051 0.45333416
0.4089769 0.67757064
0.8830174 0.57263340
0.9404673 0.10292468
0.0455565 0.89982497
0.5281055 0.24608773
0.8924190 0.04205953
0.5514350 0.32792072
0.4566147 0.95450365
我想使用 data.table 创建一个新的二进制列,将 1 分配给 value2 和 value1 之间差异最大的 x 行。我可以像这样创建一个“差异”列:
table[,difference:=value1-value2]
我可以使用order 和tail 找到x 的最大差异,例如如果x 是 5:
x<-5
table[order(difference), tail(.SD, x)]
但我还没有找到一种方法将这些与 ifelse 或 case_when 之类的东西结合起来,将 1 分配给 x 最大差异,将 0 分配给其余差异。
【问题讨论】:
-
你能做类似
table[order(difference), x := ifelse(1:.N < 5, 1, 0)]的事情来使用有序索引吗?
标签: r data.table