[R]tibbleの行に連番付け、順位付けを行う
連番付けにはrow_number関数、順位付けにはmin_rank関数かdense_rank関数を使う。
row_number関数は行に対して1から始まる連番を作成する。min_rank関数とdense_rank関数は順位付け関数であるが動作が異なり、min_rank関数は指定の列の値に同じ値があった場合は同位としてその次の順位を飛ばすが、dense_rank関数は同じ値があった場合は同位として次の順位は飛ばさない。最後の例のとおり、row_number関数は与えられたtibbleについて1行目から連番を割り当てるが、min_rank関数とdense_rank関数は指定された列の値に基づいて順位付けを行う。順位付けのデフォルトは昇順のため、これを降順にしたい場合は列を指定する際にdesc関数を使用する。
> library(tidyverse)
> tib <- tibble(n = c(20, 20, 30, 10, 40))
> tib %>% arrange(n) %>% mutate(row_number(), min_rank(n), dense_rank(n)) %>% as.data.frame()
n row_number() min_rank(n) dense_rank(n)
1 10 1 1 1
2 20 2 2 2
3 20 3 2 2
4 30 4 4 3
5 40 5 5 4
> tib %>% arrange(n) %>% mutate(row_number(), min_rank(desc(n)), dense_rank(desc(n))) %>% as.data.frame()
n row_number() min_rank(desc(n)) dense_rank(desc(n))
1 10 1 5 4
2 20 2 3 3
3 20 3 3 3
4 30 4 2 2
5 40 5 1 1
> tib %>% mutate(row_number(), min_rank(desc(n)), dense_rank(desc(n))) %>% as.data.frame()
n row_number() min_rank(desc(n)) dense_rank(desc(n))
1 20 1 3 3
2 20 2 3 3
3 30 3 2 2
4 10 4 5 4
5 40 5 1 1
« [R]tibbleから列の値が重複している行を抽出する | トップページ | [R]tibbleで特殊な列名を使用して操作する »
「R(tidyverse)」カテゴリの記事
- [R]2つの列による重複を調べてその重複の数を表示する(2025.12.24)
- [R]tibbleから指定した一列を取り出してベクトルにする(2025.10.19)
- [R]tibbleを指定した列だけのtibbleに変換する(2025.10.14)
- [R]tibbleを指定した行だけのtibbleに変換する(2025.10.13)
- [R]tibbleの列名を得る(2025.07.17)
« [R]tibbleから列の値が重複している行を抽出する | トップページ | [R]tibbleで特殊な列名を使用して操作する »

コメント