【发布时间】:2017-08-29 00:49:35
【问题描述】:
我想按数据分成分位数,和this great question一样
问题是我想在时间序列中每天都这样做:
set.seed(123)
temp.all <- data.frame(date = c(rep(Sys.Date() - 1, 12), rep(Sys.Date(), 12)),
name=letters[c(1:12, 1:12)], value=rnorm(24))
目前,我正在使用 for 循环解决:
library(dplyr)
for (d in unique(temp.all$date)) {
temp = filter(temp.all, date == d)
temp$quartile <- with(temp, factor(
findInterval( val, c(-Inf,
quantile(val, probs=c(0.25, .5, .75)), Inf) , na.rm=TRUE),
labels=c("Q1","Q2","Q3","Q4")
))
# ...and doing rbind on 'temp' to reconstruct temp.all with quartiles
}
关于如何避免可怕的 for 循环的任何想法?是否有group_by 这样做的方式?
【问题讨论】:
标签: r