使用dplyr'飞行;s filter()–;使用关系运算符
我被卡住了。我如何使用两个关系运算符同时作为组内组内的过滤器 我得到了什么 数据 要与此过滤器结合使用dplyr'飞行;s filter()–;使用关系运算符,r,filter,dplyr,conditional,relational,R,Filter,Dplyr,Conditional,Relational,我被卡住了。我如何使用两个关系运算符同时作为组内组内的过滤器 我得到了什么 数据 要与此过滤器结合 library(dplyr) tbl %>% group_by(id1, id2) %>% filter( (row_number() == n() & x > 2 ) ) #> # A tibble: 2 x 3 #> # Groups: id1, id2 [2] #> id1 id2 x #> <int
library(dplyr)
tbl %>% group_by(id1, id2) %>%
filter( (row_number() == n() & x > 2 ) )
#> # A tibble: 2 x 3
#> # Groups: id1, id2 [2]
#> id1 id2 x
#> <int> <chr> <int>
#> 1 1 x_02 5
#> 2 2 x_03 6
tbl %>% group_by(id1, id2) %>%
filter( (row_number() == 1 & x < -2 ) )
#> # A tibble: 1 x 3
#> # Groups: id1, id2 [1]
#> id1 id2 x
#> <int> <chr> <int>
#> 1 1 x_02 -4
tbl%>%分组依据(id1,id2)%>%
过滤器((行数()==1&x<-2))
#>#A tible:1 x 3
#>#组:id1,id2[1]
#>id1 id2 x
#>
#>1 x_02-4
像这样的,我想,但这并没有给我任何数据
tbl %>% group_by(id1, id2) %>%
filter( (row_number() == n() & x > 2 ) &
(row_number() == 1 & x < -2 ) )
tbl%>%分组依据(id1,id2)%>%
筛选器((行号()==n()&x>2)&
(行号()==1和x<-2))
这为什么不给我点帮助
我试图得到/期望的结果
#一个tible:2x3
#分组:id1,id2[1]
id1 id2 x
1 x_02-4
1 x_02 5
当一个组中两个条件都满足时,该组应该有两行,所以只需再次筛选n()==2
tbl %>%
filter((row_number() == n() & x > 2 ) | (row_number() == 1 & x < -2 )) %>%
filter(n() == 2)
# A tibble: 2 x 3
# Groups: id1, id2 [1]
# id1 id2 x
# <int> <chr> <int>
# 1 1 x_02 -4
# 2 1 x_02 5
tbl%>%
过滤器((行号()==n()&x>2)|(行号()==1&x<-2))%>%
过滤器(n()==2)
#一个tibble:2x3
#分组:id1,id2[1]
#id1 id2 x
#
#1 x_02-4
#2 1 x_02 5
请尝试其他选项(请参见备注):
tbl%>%
过滤器((行号()==n()&x>2)|(行号()==1&x<-2))%>%
过滤器(n()==2)%>%
不同的(id1,id2)%>%
左连接(,tbl,by=c(“id1”,“id2”))
当一个组中两个条件都满足时,该组应该有两行,所以只需再次筛选n()==2
tbl %>%
filter((row_number() == n() & x > 2 ) | (row_number() == 1 & x < -2 )) %>%
filter(n() == 2)
# A tibble: 2 x 3
# Groups: id1, id2 [1]
# id1 id2 x
# <int> <chr> <int>
# 1 1 x_02 -4
# 2 1 x_02 5
tbl%>%
过滤器((行号()==n()&x>2)|(行号()==1&x<-2))%>%
过滤器(n()==2)
#一个tibble:2x3
#分组:id1,id2[1]
#id1 id2 x
#
#1 x_02-4
#2 1 x_02 5
请尝试其他选项(请参见备注):
tbl%>%
过滤器((行号()==n()&x>2)|(行号()==1&x<-2))%>%
过滤器(n()==2)%>%
不同的(id1,id2)%>%
左连接(,tbl,by=c(“id1”,“id2”))
您能解释一下为什么示例中的条件与您提供的解释不符吗?例如,您说您希望在id1和id2中查找并查找从>-2开始到<2结束的x系列,但您的条件涉及到一个您没有提到的行号,与>-2语句相反:filter((row_number()==n()&x>2))。我看不出你提到的条件和你的预期结果之间有什么关系。@StewartRoss,谢谢你的提问。如果我理解,请更正调用row\u number()==n()
为我提供了最后一行n()
th,row,row\u number()
内,groupby()
。在这种情况下是id1
和id2
。然后我将其与条件相结合,&
,即该特定的最后一行必须大于该行中的2,即x>2
。这是我在数据之后的第一次调用中所做的。结果为id11
1和2以及id2
的调用是x_02
和x_03
,值为5和6。我希望这能回答你的问题?如果没有,请再次询问。可能看看我想要的结果。谢谢。您的代码要求在每个组中保留最后一行、第一行、x>2和x<2的每一行。(必须没有)但那不是你说的你想要的。我已经更新了我的文本(就在数据下面)。你说的一定没有。我不确定我是否同意。对于组id1==1
内的案例id2==x_02
有一系列x
值,从-4
开始,到5
结束,这正是我想要提取的第一个和最后一个值。这就是我试图在我想要的结果中表现出来的。我想我可能错过了什么?请随时提出您认为可以澄清问题的任何编辑建议。您是否尝试过筛选((row_number()==n()&x>2)|(row_number()==1&x<-2))
?您能否解释为什么示例中的条件与您提供的解释不匹配?例如,您说您希望在id1和id2中查找并查找从>-2开始到<2结束的x系列,但您的条件涉及到一个您没有提到的行号,与>-2语句相反:filter((row_number()==n()&x>2))。我看不出你提到的条件和你的预期结果之间有什么关系。@StewartRoss,谢谢你的提问。如果我理解,请更正调用row\u number()==n()
为我提供了最后一行n()
th,row,row\u number()
内,groupby()
。在这种情况下是id1
和id2
。然后我将其与条件相结合,&
,即该特定的最后一行必须大于该行中的2,即x>2
。这是我在数据之后的第一次调用中所做的。结果为id11
1和2以及id2
的调用是x_02
和x_03
,值为5和6。我希望这能回答你的问题?如果没有,请再次询问。可能看看我想要的结果。谢谢。您的代码要求在每个组中保留最后一行、第一行、x>2和x<2的每一行。(必须没有)但那不是你说的你想要的。我已经更新了我的文本(就在数据下面)。你说的一定没有。我不确定我是否同意。对于组id1==1
内的案例id2==x_02
有一系列x
值,从-4
开始,到5
结束,这正是我想要提取的第一个和最后一个值。这就是我试图在我想要的结果中表现出来的。我想我可能错过了什么?请随意建议您认为可以澄清问题的任何编辑。您是否尝试过过滤器((行号()==n()&x>2)|(行号()==1&x<-2))
tbl %>%
filter((row_number() == n() & x > 2 ) | (row_number() == 1 & x < -2 )) %>%
filter(n() == 2)
# A tibble: 2 x 3
# Groups: id1, id2 [1]
# id1 id2 x
# <int> <chr> <int>
# 1 1 x_02 -4
# 2 1 x_02 5
tbl %>%
filter((row_number() == n() & x > 2 ) | (row_number() == 1 & x < -2 )) %>%
filter(n() == 2) %>%
distinct(id1, id2) %>%
left_join(., tbl, by=c("id1", "id2"))