【发布时间】:2019-08-12 18:54:15
【问题描述】:
有没有办法用用户一步确定的最大/最小阈值替换data.frame 列中高于或低于设置阈值的值?
data.table::between() 函数返回TRUE 或FALSE,但没有指示它是高于还是低于...
MWE 见下文。我可以分两步得到结果,但想知道是否已经有一个内置函数可以用最大/最小值替换高于/低于最大值/最小值的值。
谢谢。
library(data.table)
library(magrittr)
a <- data.table(colA = LETTERS[seq(1,10)],
colB = 1:10)
the_max <- 7
the_min <- 3
# creates TRUE/FALSE column...
a[, colC := between(colB, the_min, the_max)]
a
#> colA colB colC
#> 1: A 1 FALSE
#> 2: B 2 FALSE
#> 3: C 3 TRUE
#> 4: D 4 TRUE
#> 5: E 5 TRUE
#> 6: F 6 TRUE
#> 7: G 7 TRUE
#> 8: H 8 FALSE
#> 9: I 9 FALSE
#> 10: J 10 FALSE
# gets the result...
a[, colD := colB] %>%
.[colD < the_min, colD := the_min] %>%
.[colD > the_max, colD := the_max]
a
#> colA colB colC colD
#> 1: A 1 FALSE 3
#> 2: B 2 FALSE 3
#> 3: C 3 TRUE 3
#> 4: D 4 TRUE 4
#> 5: E 5 TRUE 5
#> 6: F 6 TRUE 6
#> 7: G 7 TRUE 7
#> 8: H 8 FALSE 7
#> 9: I 9 FALSE 7
#> 10: J 10 FALSE 7
由reprex package (v0.2.1) 于 2019 年 8 月 12 日创建
【问题讨论】:
标签: r data.table