对整洁数据使用多个条件进行过滤

问题描述 投票:0回答:1

我在整洁的数据帧上正在使用过滤器(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)))

但是不起作用(因为max是在所有列Variable上计算的),我认为我需要值=最大值(值)[变量$ a]。过滤器必须采取这种方式:

Time Variable Value
3    a        10 
3    b        1
3    c        3
3    d        7

我更喜欢使用dplyr的解决方案。谁能给我一个关于使用多个条件过滤整洁df的一般规则?

r dplyr tidy
1个回答
0
投票

基于已编辑的标准,这将提供所需的结果。

data1 <- data1 %>%
         group_by(Time) %>%
         filter(any(Variable=="a" & 
                    Value==max(data1$Value[data1$Variable == 'a'])))
© www.soinside.com 2019 - 2024. All rights reserved.