概要
dplyr
パッケージに含まれるtally()
とcount()
は、列を集約して行数を取得する関数です。group_by(), summarise(), 集計関数, ungroup()
の機能を併せ持つ関数でもあります。類似する関数にadd_tally()
とadd_count()
があり、逆操作を行うuncount()
が存在します。
関連ページ
関数
tally(x, wt, sort = FALSE, name = "n")
count(x, ..., wt = NULL, sort = FALSE, name = "n", .drop = group_by_drop_default(x))
引数 | 指定 | 説明 |
---|---|---|
x | 必須 | データフレーム |
… | 任意 | count() で使用するグループ化する列を指定する |
wt | 任意 | 行の重みを指定する 未指定の場合は1行1件でカウントする |
sort | 任意 | 集計結果で降順に並べ替える場合は TRUE を指定する |
name | 任意 | 集計結果の列名を指定する |
使い方
解説用データフレーム
df <- tibble(
x1 = c('A', 'A', 'B', 'B', 'B'),
w1 = c(1, 2, 3, 4, 5)
)
> df
# A tibble: 5 x 2
x1 w1
<chr> <dbl>
1 A 1
2 A 2
3 B 3
4 B 4
5 B 5
1.行数の取得
1-1.行数の取得
以下のコードは、全て同じ結果を返します。
# summarise()を使用した例
group_by(df, x1) %>%
summarise(n = n()) %>%
ungroup()
# tally()を使用した例
group_by(df, x1) %>%
tally() %>%
ungroup()
# count()を使用した例
count(df, x1)
# A tibble: 2 x 2
x1 n
<chr> <dbl>
1 A 2
2 B 3
1-2.重み付き行数の取得
以下のコードは、全て同じ結果を返します。
# summarise()を使用した例
group_by(df, x1) %>%
summarise(n = sum(w1)) %>%
ungroup()
# tally()を使用した例
group_by(df, x1) %>%
tally(w1) %>%
ungroup()
# count()を使用した例
count(df, x1, wt = w1)
# A tibble: 2 x 2
x1 n
<chr> <dbl>
1 A 3
2 B 12
2.オプション
2-1.列名の変更
以下のコードは、全て同じ結果を返します。
# summarise()を使用した例
group_by(df, x1) %>%
summarise(y = sum(w1)) %>%
ungroup()
# tally()を使用した例
group_by(df, x1) %>%
tally(w1, name = 'y') %>%
ungroup()
# count()を使用した例
count(df, x1, wt = w1, name = 'y')
# A tibble: 2 x 2
x1 y
<chr> <dbl>
1 A 3
2 B 12
2-2.降順の並び替え
以下のコードは、全て同じ結果を返します。
# summarise()を使用した例
group_by(df, x1) %>%
summarise(n = sum(w1)) %>%
ungroup() %>%
arrange(desc(n))
# tally()を使用した例
group_by(df, x1) %>%
tally(w1, sort = TRUE) %>%
ungroup()
# count()を使用した例
count(df, x1, wt = w1, sort = TRUE)
# A tibble: 2 x 2
x1 y
<chr> <dbl>
1 B 12
2 A 3