【问题标题】:How do i select rows based on specific condition如何根据特定条件选择行
【发布时间】:2018-12-12 06:58:43
【问题描述】:

我正在尝试根据特定条件选择特定行。喜欢获得关于第一列的所有低于 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  

【问题讨论】:

  • 你能分享一下预期的输出吗?请使用dput 分享您的数据,以便我们直接工作。
  • 我写的“输出”是我想要实现的预期输出
  • 您能否使用dput分享您的输入数据集?
  • 输入数据是我在图像中提供的数据。我不知道如何共享输入数据集。真的很抱歉,因为我不经常在这里发帖
  • 如果你能提出解决方案,那将是一个很大的帮助

标签: sql r


【解决方案1】:

这是通过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")

【讨论】:

    猜你喜欢
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    相关资源
    最近更新 更多