メインコンテンツにスキップ
モジュール 4 · レッスン 1 / 2コース内の 7/10~12 min
モジュールのレッスン (1/2)

データのフィルタリングと選択

Tidyverse は、共通の哲学、文法、データ構造を共有するデータ サイエンス用に設計された R パッケージのコレクションです。このスイートのデータ操作用のコア パッケージは dplyr と呼ばれます。

dplyr は、データ フレーム操作を非常に直感的に行うための一連の関数 (「動詞」) を導入します。


パイプ演算子 (%>% または |>)

Tidyverse の哲学は、オペレーションを連鎖させることに重点を置いています。パイプ演算子 %>% (または R 4.1 以降で導入されたネイティブ パイプ |>) は、1 つの式の結果を受け取り、それを最初の引数として次の関数に渡します。これにより、ネストされた関数呼び出しが回避され、一時変数でワークスペースが乱雑になるのを防ぎます。

R
# Without pipe:
filter(select(df, name, age), age > 20)

# With pipe:
df %>%
  select(name, age) %>%
  filter(age > 20)

フィルタリングと選択のための dplyr 動詞

データ フレームからデータを抽出するための 3 つの基本的な動詞は次のとおりです。

1. select()

データ フレームから特定の列を選択します。保持する列名をリストすることも、- プレフィックスを使用して列を除外することもできます。

R
# Select the 'name' and 'salary' columns
select(df, name, salary)

# Remove the 'address' column
select(df, -address)

2. filter()

1 つ以上の論理条件に基づいて行をフィルターします。

R
# Filter rows where age is greater than 30
filter(df, age > 30)

# Filter using multiple conditions (logical AND)
filter(df, age > 30, department == "HR")

3. arrange()

1 つ以上の列の値に基づいて行を並べ替えます。デフォルトでは、並べ替え順序は昇順です。降順で並べ替えるには、列名を desc() で囲みます。

R
# Sort by age (ascending)
arrange(df, age)

# Sort by salary (descending)
arrange(df, desc(salary))

自分で試してみてください

演習 1: 列を選択する

運動#r.m4.l1.e1
試行回数: 0読み込み中…

データ フレーム df を指定して、select() を使用して名前と年齢の列を選択し、結果を df_selected に保存します。

エディターを読み込み中…
ヒントを表示

アメリカ: df_selected <- select(df, 名前, 年齢)

3 回の試行後に解決策が利用可能になります

運動#r.m4.l1.e2
試行回数: 0読み込み中…

age 列が厳密に 18 より大きいデータ フレーム df の行をフィルターし、結果を df_socials に保存します。

エディターを読み込み中…
ヒントを表示

filter(df, age > 18) 関数を使用して、結果を df_socials に割り当てます。

3 回の試行後に解決策が利用可能になります

運動#r.m4.l1.e3
試行回数: 0読み込み中…

パイプ演算子 %>% を使用して操作を連鎖させます。まず、年齢が 18 を超えるレコードのみを保持する df をフィルターし、次に名前列を選択します。結果をresに保存します。

エディターを読み込み中…
ヒントを表示

Scrivi: res <- df %>% filter(age > 18) %>% select(name)

3 回の試行後に解決策が利用可能になります

運動#r.m4.l1.e4
試行回数: 0読み込み中…

array() と desc() を使用して、給与列に基づいてデータ フレーム df の行を降順に並べ替えます。結果を df_sorted に保存します。

エディターを読み込み中…
ヒントを表示

米国はパイプラインを手配し(給与を記述)、パイプラインを調整し、指示を出します。

3 回の試行後に解決策が利用可能になります

運動#r.m4.l1.e5
試行回数: 0読み込み中…

df に完全なパイプラインを作成します。部門が「IT」に等しいレコードをフィルターし、列名と給与を選択し、結果を給与順 (昇順) で並べ替えます。最終結果をresに保存します。

エディターを読み込み中…
ヒントを表示

パイプ %>% を使用して、filter(Department == 'IT')、select(name,給与)、および配置(給与)をチェーンします。

3 回の試行後に解決策が利用可能になります