【发布时间】:2018-08-29 20:16:40
【问题描述】:
我正在尝试为以下 data.frame df 创建一个 bin 列,但该 bin 将取决于 key 列。 lookup data.frame 包含每个 key 值的 bin 定义。
df <- data.frame(
key = c("foo", "bar"),
value = c(1, 10),
stringsAsFactors = FALSE
)
lookup <- data.frame(
foo = c(0, 5, 10),
bar = c(0, 12, 15),
stringsAsFactors = FALSE
)
bins <- df %>% rowwise() %>%
mutate(bin = as.numeric(cut(value, breaks = lookup %>% select(key) %>% pull, include.lowest = TRUE)))
上面的函数给出了想要的结果:
> bins
key value bin
1 foo 1 1
2 bar 10 1
但是,我实际使用的 data.frame 要大得多。该功能非常缓慢。有没有更好的方法来加快速度?
【问题讨论】: