複数のcsvファイルのディレクトリを読み込もうとしていますが、それぞれ約7K +行と約1800列です。私は、データ・ディクショナリを持っていて、データ・フレームに読み込むことができます。ここで、データ・ディクショナリの各行は、変数(列)名とデータ型を識別します。データフレーム内の値を使用してread_csvに列の種類を指定します。
readr
パッケージ内にある?read_csv
を見ると、列の種類を指定することができます。しかし、私は約1800の列を指定しているので、使用可能なデータ・ディクショナリからの情報を使用して、関数が必要とする適切な形式の列/型のペアを指定したいと考えていました。
あまり望ましくない選択肢は、すべての列を文字として読み取り、必要に応じて手作業で修正することです。
どのように列の種類を指定するかについてご意見をいただければ幸いです。
私が参考にしている形式にデータ辞書を取得して同軸化するのに役立ちます。
## Get the data dictionary
URL = "https://collegescorecard.ed.gov/assets/CollegeScorecardDataDictionary.xlsx"
download.file(URL, destfile="raw-data/dictionary.xlsx")
## read in the dictionary to get the variables
dict = read_excel("raw-data/dictionary.xlsx", sheet = "data_dictionary")
colnames(dict) = tolower(gsub(" ", "_", colnames(dict)))
dict = dict %>% filter(!is.na(variable_name))
## create a data dictionary
## https://stackoverflow.com/questions/46738968/specify-column-types-in-read-csv-by-using-values-in-a-dataframe/46742411#46742411
dict <- dict %>% mutate(variable_type = case_when(api_data_type == "integer" ~ "i",
api_data_type == "autocomplete" ~ "c", #assumption that this is a string
api_data_type == "string" ~ "c",
api_data_type == "float" ~ "d"))
リターン:
> ## read in the dictionary to get the variables
> dict = read_excel("raw-data/dictionary.xlsx", sheet = "data_dictionary")
> colnames(dict) = tolower(gsub(" ", "_", colnames(dict)))
> dict = dict %>% filter(!is.na(variable_name))
> dict <- dict %>% mutate(variable_type = case_when(api_data_type == "integer" ~ "i",
+ api_data_type == "autocomplete" ~ "c", #assumption that this is a string
+ api_data_type == "string" ~ "c",
+ api_data_type == "float" ~ "d"))
Error: object 'api_data_type' not found
と私のSessionInfo
> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.11.6 (El Capitan)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] stringr_1.2.0 readxl_0.1.1 readr_1.1.0 dplyr_0.5.0
loaded via a namespace (and not attached):
[1] rjson_0.2.15 lazyeval_0.2.0 magrittr_1.5 R6_2.2.2 assertthat_0.1 hms_0.2 DBI_0.7 tools_3.3.1
[9] tibble_1.2 yaml_2.1.14 Rcpp_0.12.11 stringi_1.1.5 jsonlite_1.5
私はすぐに "完全" 再現性の解決策を掲載します。 – Jas
dplyrのバージョンをアップグレードする必要があるかもしれません。私はv0.7.4 – Jas