R:使用 dplyr 包获取 Tibble 的行号

R: Obtain Row Number of a Tibble Using dplyr Package

我想获取任意满足一定条件的行的行号

在我下面的 tibble 阵型中,我只想获得 row number 其中 (p = 1, d = 1 q = 1)

tbl <- tibble::tibble(p = c(0, 0, 0, 0, 1, 0, 2, 2, 2, 2), d = c(1, 1, 1, 1, 1, 1, 1, 0, 0, 0), q = c(1, 1, 1, 1, 1, 1, 1, 0, 0, 0))

tbl

小标题:10 x 3

p d p
1 0 1 1
2 0 1 1
3 0 1 1
4 0 1 1
5 1 1 1
6 0 1 1
7 0 1 1
8 2 0 0
9 2 0 0
10 2 0 0
tbl |>  dplyr::filter(p == 1, d == 1, q == 1) |> 
  dplyr::row_number()

# p d q 
# 1 2 3 

我想要的

我只想要一个可以打印具有所需质量的 row number 的函数,这样我就可以使生成它的函数成为 object 并在另一个函数中使用它 object =16=]

您可以使用以下代码:

library(dplyr)
tbl %>%
  with(which(p == 1 & d == 1 & q == 1))

输出:

[1] 5

这意味着它是您数据的第 5 行。

另一个可能的解决方案:

library(dplyr)

tbl %>% 
  rowid_to_column %>% 
  filter(p == 1 & d == 1 & q == 1) %>% 
  pull(rowid)

#> [1] 5

我们可以将 filteracrossif_all

一起使用
library(dplyr)
tbl %>% 
    mutate(rn = row_number()) %>% 
    filter(across(p:q, `==`, 1)) %>% 
    pull(rn)
[1] 5

或使用

tbl %>% 
  summarise(rn = which(if_all(p:q, `==`, 1)))
# A tibble: 1 × 1
     rn
  <int>
1     5

或在逻辑 matrix

上使用 base RrowSums
 which(rowSums(tbl == 1) == 3)
[1] 5