列の抽出

列の抽出

dplyr::select

dplyr::storms |> 
  dplyr::select(name, year, wind)

連続する列を抽出

  • select(最初の列名:最後の列名)
dplyr::storms |> 
  dplyr::select(name, year:hour) # name 列、及びyear列からhour列までを抽出

列の除外

  • select( !列名 )
    • 以下のように!と&を使う書き方の他に、select(-lat, -long) という書き方も可能
dplyr::storms |> 
  dplyr::select(!lat & !long) # lat 列と long 列を除外

列名で条件づけて抽出

  • 指定した文字列から始まる列名の列を抽出: select( starts_with(“文字列”) )
  • 指定した文字列で終わる列名の抽出は ends_with(“文字列”)
  • 指定した文字列を含む列名の列を抽出: select( contains(“文字列”) )
tidyr::billboard |> 
    dplyr::select(artist, track, starts_with("wk")) # artist, track 及び wk で始まる列名の列を抽出
  • dplyr::num_range(“abc”, 1:10) : abc1〜abc10までの列
tidyr::billboard |> 
    dplyr::select(artist, track, num_range("wk", seq(2, 50, by = 2))) # artist, track 及び wk1-wk50のうち偶数番号の列名の列を抽出
  • 指定した正規表現に合致する列名の列を抽出: select( matches(“正規表現”) )
tidyr::world_bank_pop |> 
    dplyr::select(matches("[0-9]+")) # 列名が数字のみの列を抽出
  • 指定したの列を抽出: select(where( 型の判定関数 ))
tidyr::world_bank_pop |> 
    dplyr::select(where(is.numeric)) # 数値型の列を抽出

列をベクトルとして抽出

dplyr::pull

dplyr::storms |> 
  dplyr::distinct(name) |> # name 列の重複分を削除
  dplyr::slice(1:10) |> # 先頭10行分を抽出
  dplyr::pull(name) # name列をベクトルとして抽出
 [1] "Amy"      "Blanche"  "Caroline" "Doris"    "Eloise"   "Faye"    
 [7] "Gladys"   "Hallie"   "Belle"    "Dottie"  

列名の変更

dplyr::rename

  • rename(“変更後の列名”= 変更前の列名)
    • 左辺が変更の列名
      • ダブルクォーテーションで囲む
    • 右辺が変更の列名
      • クォーテーションでは囲まない
dplyr::storms |> 
  dplyr::select(name, year, wind) |> 
  dplyr::rename("名称" = name, "年" = year, "風速" = wind)

複数列を一括でrename

  • dplyr::rename_with(~関数, 列)
tidyr::billboard |> 
    dplyr::rename_with(
      ~paste0(
        stringr::str_replace_all(.x, "wk", "week_") # wkをweek_に置き換え
        ),
      dplyr::starts_with("wk") # wkから始まる列を選択
    )

dplyr::selectしつつ列名変更

  • dplyr::selectとdplyr::renameは、dplyr::selectで列名を指定**することで一括実行できる
dplyr::storms |> 
  dplyr::select("名称" = name, "年" = year, "風速" = wind)