【问题标题】:R count number of rows between two rows with specific variablesR计算具有特定变量的两行之间的行数
【发布时间】:2020-03-15 16:42:16
【问题描述】:

我的目标是计算具有特定值的行之间的行数。我的出发点是:

  id=c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2),
  var1=c('A', 'B', 'E', 'N', 'J', 'B', 'J', 'A', 'C', 'B', 'L', 'M', 'B', 'C', 'F'),
  var2=c(1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1 )
)

目标是计算按 id 分组的行数,在 var1='B' 和 var2='1' 的行与 var1='B' 和 var2='2' 的行之间。因此,对于 id=1,有 3 个这样的行,对于 id=2,有 2 个这样的行。我的目标是:

  id=c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2),
  var1=c('A', 'B', 'E', 'N', 'J', 'B', 'J', 'A', 'C', 'B', 'L', 'M', 'B', 'C', 'F'),
  var2=c(1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1 ),
  num=c(NA, NA, 1, 2, 3, NA, NA, NA, NA, NA, 1, 2, NA, NA, NA)            
 )

我之前尝试过的: Count number of rows between two specific rows 我仍然不确定这里的人想要完成什么任务。 我也试过这个: Counting number of rows between rows 该位不是在 2 行之间计数,而是从顶行开始计数。我需要在指定的行之间计数。我知道这项任务可以通过多种方式完成。例如,我可以只选择我需要计算的行并丢弃其他任何内容。或者我可以在我拥有的数据框中进行计数。但我不确定如何做这些。

【问题讨论】:

    标签: r count row


    【解决方案1】:

    你可以试试这样的:

    library(tidyverse)
    
    my_df <- tibble(
      id=c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2),
      var1=c('A', 'B', 'E', 'N', 'J', 'B', 'J', 'A', 'C', 'B', 'L', 'M', 'B', 'C', 'F'),
      var2=c(1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1 )
    )
    
    my_df %>%
      mutate(rw_nm = row_number()) %>%
      filter(var1 == "B" & var2 %in% c(1,2))%>%
      group_by(id) %>%
      summarise(count = (rw_nm[[2]] - rw_nm[[1]])-1)
    #> # A tibble: 2 x 2
    #>      id count
    #>   <dbl> <dbl>
    #> 1     1     3
    #> 2     2     2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多