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
我们可以将 filter
与 across
或 if_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 R
和 rowSums
which(rowSums(tbl == 1) == 3)
[1] 5
我想获取任意满足一定条件的行的行号
在我下面的 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
我们可以将 filter
与 across
或 if_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 R
和 rowSums
which(rowSums(tbl == 1) == 3)
[1] 5