【发布时间】:2015-11-06 18:13:19
【问题描述】:
我正在尝试根据dplyr 中某些值的百分比排名创建一些组。
下面的代码创建一个数据框,然后sapply 一个函数来确定组。缺点是我无法为tbl_postgres 工作,只能为数据帧工作。所以我很好奇是否有其他解决方案。
我曾考虑过使用 ntile 的东西,但我想创建的组有一些任意的截止点。此外,我没有太多运气让它与dplyr 一起工作(也许纯 sql 可能工作)。
library(dplyr)
n <- 100
df1 <- data.frame(idx = 1:n, x = rnorm(n))
df1 <- df1 %>%
arrange(x) %>%
mutate(pc_x = percent_rank(x))
index <- function(x) {
if (x < 0) {
return(NA)
} else if (x < 0.3) {
return(1)
} else if (x < 0.7) {
return(2)
} else if (x <= 1) {
return(3)
} else {
return(NA)
}
}
df1 <- df1 %>%
mutate(group = sapply(pc_x, index))
【问题讨论】:
-
看到答案后,这与这里的问题有关:stackoverflow.com/questions/23163567/…
标签: r dplyr data-manipulation