如何根据特定条件选择行

时间:2018-12-12 06:58:43

标签: sql r

我正在尝试根据特定条件选择特定行。想要获得相对于第一列在z以下的所有值,并排除顶部的那些。我尝试使用过滤器和分组依据,但是在下面提供的输入和预期输出中不起作用

Input    
abc  x  
abc  y   
abc  z  
abc  g  
abc  t     
pqr  x  
pqr  z  
pqr  y  
cvb  z  
cvb  x  
cvb  y  

预期输出

abc  g  
abc  t  
pqr  y  
cvb  x  
cvb  y  

1 个答案:

答案 0 :(得分:0)

这是通过dplyr的可能解决方案,

library(tidyverse)

df %>% 
 group_by(a) %>% 
 mutate(new = row_number()) %>% 
 filter(new > new[b == 'z']) %>% 
 select(-new)

给出,

# A tibble: 5 x 2
# Groups:   a [3]
   a     b    
 <chr> <chr>
1 a     g    
2 a     t    
3 b     y    
4 c     x    
5 c     y    

数据:

structure(list(a = c("a", "a", "a", "a", "a", "b", "b", "b", 
"c", "c", "c"), b = c("x", "y", "z", "g", "t", "x", "z", "y", 
"z", "x", "y")), row.names = c(NA, -11L), class = "data.frame")