我想獲得滿足某些條件的任何行的行號。
在我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具有所需質量的函式,這樣我就可以使生成它的函式成為一個具有名稱的物件,然后在另一個函式中使用它
uj5u.com熱心網友回復:
您可以使用以下代碼:
library(dplyr)
tbl %>%
with(which(p == 1 & d == 1 & q == 1))
輸出:
[1] 5
這意味著它是您資料的第 5 行。
uj5u.com熱心網友回復:
我們可以使用filterwithacross或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
或者在邏輯上使用base RwithrowSumsmatrix
which(rowSums(tbl == 1) == 3)
[1] 5
uj5u.com熱心網友回復:
另一種可能的解決方案:
library(dplyr)
tbl %>%
rowid_to_column %>%
filter(p == 1 & d == 1 & q == 1) %>%
pull(rowid)
#> [1] 5
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/450190.html
上一篇:折疊每個家庭的資料
