170  summariseの中で動く特別な関数

library(tidyverse)

dat <- tibble(
  num = 1:10,
  fac2 = rep(c("a","b"), 5),
  fac3 = rep(c("A","B","C"), 4)[1:10]
)
?summarise

の中の、Useful functionsというところをみていただくと、いくつか関数が紹介されています

この中で、n()という関数だけは、dplyrのsummarise, mutate, filter等の中でだけしか使えない特別な関数となっています。

その動作は、summarise,mutate,filterに与えられたデータの列数を取得するというものになります。

試しに、

n()
Error in `n()`:
! Must only be used inside data-masking verbs like `mutate()`,
  `filter()`, and `group_by()`.

単独で呼び出しても、dplyr verbsの中でしか使えませんと怒られます。

しかし、

dat %>% 
  summarise(
    number1 = n(),
    number2 = length(num)
  )
# A tibble: 1 × 2
  number1 number2
    <int>   <int>
1      10      10
nrow(dat)
[1] 10

いかがでしょう?

n()を利用することでこれまでlength(列名)としていたものをだいぶ簡略化できましたね?

データ加工では割合の計算や、統計的な計算でも頻用する関数になるのでここで是非理解しておいてください。

次の動画では、スライドでお示しした、ケーキの購入データを例にして、データの単純集計を行ってみましょう。