【发布时间】:2020-02-25 10:34:46
【问题描述】:
我在一个整洁的数据帧上使用过滤器 (dplyr) 函数:
data1<-data.frame("Time"=c(0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5),
"Variable"=rep(c("a","b","c","d"),6),
"Value"=c(0,1,0,0,1,1,1,1,1,3,2,3,10,1,3,7,2,1,4,2,3,1,5,13))
我想要做的是过滤变量“a”等于2和变量“a”最大的时间。 对于第一种情况,mi 代码是:
data1<-data1%>%
group_by(Time)%>%
filter(any(Variable=="a" & Value==2))
工作正常并给我:
Time Variable Value
2 a 2
2 b 1
2 c 4
2 d 2
现在不知道怎么可能是 a=max(a),我试过了:
data1<-data1%>%
group_by(Time)%>%
filter(any(Variable=="a" & Value==max(Value)))
但不起作用(因为最大值是在所有列变量上计算的)我想我需要类似的东西 值=最大值(值)[变量$a]。 被过滤的必须这样做:
Time Variable Value
3 a 10
3 b 1
3 c 3
3 d 7
我更喜欢 dplyr 的解决方案。任何人都可以给我一个一般规则,用多个标准过滤整洁的 df 吗?
【问题讨论】: