[R]2つの列による重複を調べてその重複の数を表示する
tibbleを使用してgroup_by関数で重複を調べたい列を指定し、summarize関数に渡す。ただ渡すだけの場合は、重複する行を削除するだけになってしまうので、それぞれの重複の数を数えるためにsummarize関数内でn関数を使う。簡潔な表記にするため、画面表示はデータフレームで行っている。
> library(tidyverse)
> s1 <- c("AA", "AA", "AA", "AA", "BB", "BB", "BB", "CC", "CC")
> s2 <- c("aa", "aa", "aa", "bb", "bb", "bb", "cc", "cc", "dd")
> tib <- tibble(s1, s2)
> tib |> as.data.frame()
s1 s2
1 AA aa
2 AA aa
3 AA aa
4 AA bb
5 BB bb
6 BB bb
7 BB cc
8 CC cc
9 CC dd
> tib |> group_by(s1, s2) |> summarize() |> as.data.frame()
`summarise()` has grouped output by 's1'. You can override using the `.groups` argument.
s1 s2
1 AA aa
2 AA bb
3 BB bb
4 BB cc
5 CC cc
6 CC dd
> tib |> group_by(s1, s2) |> summarize(n = n()) |> as.data.frame()
`summarise()` has grouped output by 's1'. You can override using the `.groups` argument.
s1 s2 n
1 AA aa 3
2 AA bb 1
3 BB bb 2
4 BB cc 1
5 CC cc 1
6 CC dd 1
> tib |> group_by(s1, s2) |> summarize(n = n()) |> filter(n > 1) |> as.data.frame()
`summarise()` has grouped output by 's1'. You can override using the `.groups` argument.
s1 s2 n
1 AA aa 3
2 BB bb 2
