web-dev-qa-db-ja.com

Rtidyverseで列タイプを変換する方法

Tidyverseの使用に慣れようとしていますが、データ型の変換が障壁になっています。文字列を自動的に因子に変換することは理想的ではないことは理解していますが、因子を使用したい場合もあるので、ティブル内の目的の文字列を因子に簡単に変換するいくつかのアプローチが優れています。 readxlパッケージを使用してExcelファイルを読み込むことを好みますが、要素は許可された列タイプではありません。事後に列ごとに調べることはできますが、それは実際には効率的ではありません。次の2つのいずれかを機能させたいと思います。

  1. ファイルを読み込み、同時にどの列を要素として読み込むかを指定します。

     data <- read_Excel(path = "myfile.xlsx", 
                        col_types=c(col2="factor", col5="factor)))
    
  2. または、この機能は多くの理由で優れていますが、どのように機能するのか理解できません。 col_types関数は私にとって非常に混乱しています:

     diamonds <- col_types(diamonds, 
                           cols=c(cut="factor", color="factor", clarity="factor"))
    

前もって感謝します!

4
tim.farkas

read_Excelは、Excelセルタイプを使用して、Rで使用する列タイプを推測します。また、データを読み取り、列タイプの限定されたセットを許可する必要があるというread_Excelの意見にも同意します。その後、ユーザーが希望する場合は、型変換を後で行うことができます。

col_typesという関数はありません。これはread_Excelのパラメータ名です。 tidyverseの方法は次のようになります。

library(tidyverse)

(foo <- data_frame(x = letters[1:3], y = LETTERS[4:6], z=1:3))
#> # A tibble: 3 x 3
#>   x     y         z
#>   <chr> <chr> <int>
#> 1 a     D         1
#> 2 b     E         2
#> 3 c     F         3

foo %>% 
  mutate_at(vars(x, y), factor)
#> # A tibble: 3 x 3
#>   x     y         z
#>   <fct> <fct> <int>
#> 1 a     D         1
#> 2 b     E         2
#> 3 c     F         3
4
ngm