行数の取得(集約あり)

概要

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
Sponsored Link