R_data % group_by() % summarise(across(変数、集計方法)) % _20240908

Topic(Purpose / Outcome:目的・期待される成果)

Conductor
Conductor

group_by() % summarise(across(c(変数1,変数2), .fns = list(“mean” = ~ mean(.x), “range lo” = ~ mean(.x) – 2*sd(.x), “range hi” = ~ mean(.x) + 2sd(.x)))) ← この形で覚えてしまう。

Visualization(How / Output:事実整理 / 最終ゴール)

Visualizer
Visualizer

今回はスキップ。目的に応じてカラムとして集計する変数を追加していく。

Script Design / Summary(How:設計図・概要・論理構築)

Wrangler
Wrangler

全体像はこんな感じ


# 1.0 BASIC USAGE ----

# * AVERAGE CITY FUEL CONSUMPTION BY VEHICLE CLASS ----
mpg %>%
    group_by(class) %>%
    summarise(
        across(cty, .fns = mean),
        # .fns = mean で平均値を計算
        # .fns = とはfunctionの略
        # across() で指定したカラムに対してfunctionを適用
        .groups = "drop"
        # .groups = "drop" でgroup_by()の効果を無効化、つまり通常のテーブルに戻す。
        # グループ化されたままにする場合(group_by()の効果を残す場合)、".groups = "keep""を指定。
        # または、group_by()の代わりにgroup_by()の代わりにungroup()を使う。
        # .group_by()を残してしまうと、その後の処理でエラーが発生することがある。
        # group_by()の効果が残っていると、group_by()で指定したカラム以外のカラムを使うとエラーが発生する。
    )

# * AVERAGE & STDEV CITY FUEL CONSUMPTION BY VEHICLE CLASS
mpg %>%
    group_by(class) %>%
    summarise(
        across(cty, .fns = list(mean = mean, stdev = sd)), .groups = "drop"
        # acrossはlist()で複数のfunctionを指定できる。(複数列の設定)
        # 列名はmeanとstdevになる。接頭辞のctyは自動で各列に付与される。
    )

# * AVERAGE & STDEV CITY + HWY FUEL CONSUMPTION BY VEHICLE CLASS
mpg %>%
    group_by(class) %>%
    summarise(
        across(c(cty, hwy), .fns = list(mean = mean, stdev = sd)), .groups = "drop"
        # 複数変数も指定可能
    )

# 2.0 ADVANCED ----

# * CUSTOMIZE NAMING SCHEME ----
mpg %>%
    group_by(class) %>%
    summarise(
        across(
            c(cty, hwy),
            .fns = list(mean = mean, stdev = sd),
            .names = "{.fn} {.col} Consumption"
            # .names = "{.fn} {.col} Consumption" で列名をカスタマイズ
            # Consumptionは固定
            # .fn はfunction名、.col は列名
            # .fnsはlist()で指定する。複数のfunctionを指定できる。
            # この場合、列名は "mean cty Consumption" と "stdev cty Consumption" になる。
        ),
        .groups = "drop"
    ) %>%
    rename_with(.fn = str_to_upper)
    # rename_with() で列名を大文字に変換
    # str_to_upper() で大文字に変換
    # rename_with(.fn = str_to_upper) で全ての列名を大文字に変換
    # .fn はfunction名。functionとは、列名を変更するfunctionを指定する。

# * COMPLEX FUNCTIONS ----
mpg %>%
    group_by(class) %>%
    summarise(
        across(
            c(cty, hwy),
            .fns = list(
                "mean"     = ~ mean(.x), # ~ はfunction(無名関数)の略. .x は列名。ここではc()で指定した列名。
                "range lo" = ~ (mean(.x) - 2*sd(.x)), # 平均値から2標準偏差を引いた値(下限)。全データの95%がこの範囲に収まる。
                "range hi" = ~ (mean(.x) + 2*sd(.x)) # 平均値から2標準偏差を足した値(上限)。全データの95%がこの範囲に収まる。
            ),
            .names = "{.fn} {.col}"
            # 列名をカスタマイズ
        ),
        .groups = "drop"
    ) %>%
    rename_with(.fn = str_to_upper)

Raw data / Wrangling / Feature Engineering(抽出~整形)

Raw data(How:生データ抽出元)

Raw data(How:生データ抽出方法)

  • SQL読込: –
  • CSV読込: –
  • API読込 : 〇(mpg)
  • rmarkdown:render()読込:- (.rmdのファイルをtemlate保存しておく必要あり)

Raw data(How:生データの構造 / 種類)

Extractor
Extractor

元々のデータフレーム(mpg)

Wrangling (How: Loading・生データ読込)

Wrangler
Wrangler

Loading

# Script on Rstudio
# Tips: 読み込み先のファイルは「記載するpath名の始まり」からWorking Directoryとして設定する必要性がある。


mpg

Wrangling (How: before output、Output前のデータ構造)

Wrangler
Wrangler

視える化に合わせて編集

特になし。

メモ

  • 行 (row) :レコード、Observation
  • 列 (column):特徴量、変数、次元数、次元の削減(Dimensionality Reduction): 高次元データを少ない次元に圧縮し、モデルの効率を上げるための手法。.xは列を指定している。
  • 値:data point、Feature
  • Wide format:クロス集計表(横持ちデータ)、Long format:縦持ちデータ
  • 情報ソースがWEBサイト(HTMLやCSS)の場合にはどこから抽出するか、が問われるので、HTMLやCSSの知識が必要(スクレイピングを実施するにせよ)。
  • レンダリング(rendering)とはコンピュータがデータを処理して画像や映像、テキストなどを表示させる技術。
  • .fn(単数)と.fns(複数)はfunctionの略で無名関数。~ (tilde:チルダ) も無名関数。

参考リンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA