Почему tidyverse показывает все столбцы как col_double () при чтении данных в таблицу? - PullRequest
0 голосов
/ 01 апреля 2019

Когда я читаю данные в tidyverse tibble, все столбцы отображаются как col_double().Что означает col_double здесь?

enter image description here

Когда я проверяю тиббл с использованием базовой функции R str(), все данные были прочитаны как правильные типы. enter image description here

Когда я проверяю тип тиббла, он возвращает список.enter image description here

Для меня все это сводится к трем основным вопросам:

  1. Что означает col_double?
  2. Есть ли у tidyverse альтернатива функции str() для проверки типов данных столбцов?
  3. Как правильно проверить, является ли объект тибблом?

Ответы [ 2 ]

3 голосов
/ 01 апреля 2019

double - довольно стандартный термин в языках программирования для (обычно, но не обязательно) нецелых чисел. R не использует термин много (вместо него используется numeric), но C использует удвоения, а R построен на C. Если вы хотите узнать больше, вот страница Википедии: с плавающей точкой двойной точности формат .

readr использует col_double() для (строго) анализа числовых столбцов. См. Справочную страницу ?col_double для получения дополнительной информации и виньетка пакета Введение в readr для получения более подробной информации. По умолчанию readr будет угадывать, что представляет собой каждый из ваших столбцов, а затем использовать соответствующую функцию синтаксического анализа для каждого типа, например col_double для нецелых чисел.

Лучший способ проверить, является ли что-то значащим, - is_tibble. Вы также можете использовать class() или str() (который печатает информацию о классе) и посмотреть, находится ли tbl_df среди классов.

Функции

tidyverse последовательно используют термин double, иногда сокращенно до dbl вместо numeric. Вы можете увидеть это в печати тиблов или в методе glimpse:

> as_tibble(head(iris))
# A tibble: 6 x 5
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
         <dbl>       <dbl>        <dbl>       <dbl> <fct>  
1          5.1         3.5          1.4         0.2 setosa 
2          4.9         3            1.4         0.2 setosa 
3          4.7         3.2          1.3         0.2 setosa 
4          4.6         3.1          1.5         0.2 setosa 
5          5           3.6          1.4         0.2 setosa 
6          5.4         3.9          1.7         0.4 setosa 

> glimpse(head(iris))
Observations: 6
Variables: 5
$ Sepal.Length <dbl> 5.1, 4.9, 4.7, 4.6, 5.0, 5.4
$ Sepal.Width  <dbl> 3.5, 3.0, 3.2, 3.1, 3.6, 3.9
$ Petal.Length <dbl> 1.4, 1.4, 1.3, 1.5, 1.4, 1.7
$ Petal.Width  <dbl> 0.2, 0.2, 0.2, 0.2, 0.2, 0.4
$ Species      <fct> setosa, setosa, setosa, setosa, setosa, setosa

## str (from base R) uses `num` instead of `<dbl>`
> str(iris)
'data.frame':   150 obs. of  5 variables:
 $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
 $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
 $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
 $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
2 голосов
/ 01 апреля 2019

Я рекомендую прочитать документацию для чтения файлов с разделителями из пакета readr.

  1. Когда вы используете read_csv(), R угадывает соответствующий тип переменной для каждого столбца. Сообщение " проанализировано со спецификацией столбца ", предоставляет подробную информацию о переменных и их обнаруженных типах. "Double", по сути, является нецелой числовой переменной.

  2. Таблицы всегда отображают типы переменных при выводе. (например, смотрите ссылку выше). Альтернативой является использование glimpse(), но вы все равно можете использовать str().

  3. Вы можете проверить, является ли объект тиблом, используя is_tibble()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...