【发布时间】:2018-05-26 07:01:08
【问题描述】:
样本数据
df <- data.frame(loc.id = rep(1:5, each = 6), day = sample(1:365,30),
ref.day1 = rep(c(20,30,50,80,90), each = 6),
ref.day2 = rep(c(10,28,33,49,67), each = 6),
ref.day3 = rep(c(31,49,65,55,42), each = 6))
对于每个 loc.id,如果我想保留 >= 然后 ref.day1 的天数,我会这样做:
df %>% group_by(loc.id) %>% dplyr::filter(day >= ref.day1)
我想制作 3 个数据框,每个数据框的行分别由 ref.day1、ref.day2、ref.day3 过滤
我试过了:
col.names <- c("ref.day1","ref.day2","ref.day3")
temp.list <- list()
for(cl in seq_along(col.names)){
col.sub <- col.names[cl]
columns <- c("loc.id","day",col.sub)
df.sub <- df[,columns]
temp.dat <- df.sub %>% group_by(loc.id) %>% dplyr::filter(day >= paste0(col.sub)) # this line does not work
temp.list[[cl]] <- temp.dat
}
final.dat <- rbindlist(temp.list)
我想知道如何在 dplyr 中按名称和粘贴函数引用列以将其过滤掉。
【问题讨论】: