R: readr: как я могу указать тип данных только для одного (проблемного) столбца (а не для всех)

Readr — отличный пакет. Но люди ленятся указывать тип данных для каждого столбца. (например, из 30).

Проверка ошибок синтаксического анализа может показать, что ключевой проблемой является только один столбец.

Смотрите ниже

fname='c:/q/net/SnomedCT_RF2Release_INT_20160131/Full/Terminology/sct2_Concept_Full_INT_20160131.txt'
> snm<-read_delim(fname,delim='\t')
Warning: 4016 parsing failures.
   row col   expected      actual
528950  id an integer 11000119105
528951  id an integer 11000119105
528952  id an integer 41000119109
528953  id an integer 61000119108
528954  id an integer 81000119104
...... ... .......... ...........
.See problems(...) for more details.
> probs<-problems(snm)
> table(probs$col)

  id 
4016 
> 

Как я могу указать тип данных только одного столбца (в моем случае идентификатор столбца) в моем наборе данных. (быть персонажем)

names(snm)
[1] "id"                 "effectiveTime"      "active"             "moduleId"           "definitionStatusId"

person userJT    schedule 01.06.2016    source источник


Ответы (1)


Указав этот столбец в аргументе col_types с помощью функции cols, остальные останутся такими, какие они есть. Например, чтобы указать столбец hp как символ в mtcars, используйте "c" для символа.

library(readr)
write_delim(mtcars, path = "test.txt")
test <- read_delim("test.txt", delim = " ", col_types = cols(hp = "c"))
str(test)

Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   32 obs. of  11 variables:
 $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
 $ cyl : int  6 6 4 6 8 6 8 4 4 6 ...
 $ disp: num  160 160 108 258 360 ...
 $ hp  : chr  "110" "110" "93" "110" ...
 $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
 $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
 $ qsec: num  16.5 17 18.6 19.4 17 ...
 $ vs  : int  0 0 1 1 0 1 0 1 1 1 ...
 $ am  : int  1 1 1 0 0 0 0 0 0 0 ...
 $ gear: int  4 4 4 3 3 3 3 4 4 4 ...
 $ carb: int  4 4 1 1 2 1 4 2 2 4 ...

Дополнительные сведения см. в виньетке типов столбцов readr https://cran.r-project.org/web/packages/readr/vignettes/column-types.html

person Michael Veale    schedule 01.06.2016