df <- data.frame(loc.id = rep(1:10, each = 10),
MG = rep(1:10,times = 10),
x = runif(100))
如果我想根据多种条件过滤数据,我可以这样做:
df %>% filter(MG > 5 & loc.id < 4)
但是,我有一个过滤条件不同的情况。例如
如果loc.id
小于4,则只保留MG
1-4
如果loc.id
介于5到6之间,则只保留MG
5-8
如果loc.id
大于6,则仅保持MG大于8。
答案 0 :(得分:4)
为什么不这样:
df %>% filter( (loc.id<4 & between(MG, 1,4)) | (between(loc.id, 5, 6) & between(MG, 5, 8)) | (loc.id>6 & MG>8))
答案 1 :(得分:0)
当我需要过滤数据帧时,我更喜欢使用ex:
的函数 dfalt <- df[which(df$MG > 5 & df$loc.id < 4), ]
这对我有用!