О tibble
Класс tbl_df является подклассом data.frame, созданным для того, чтобы иметь другое поведение по умолчанию. Разговорный термин “tibble” относится к фрейму данных, который имеет класс tbl_df.
У класса tbl_df следующие зависимости:
атрибуты класса: c(“tbl_df”, “tbl”, “data.frame”)
базовый элемент - вектор, где каждый вектор имеет одину и ту же длинну vctrs::vec_size()
атрибут names, представляющий собой вектор символов той же длины, что и базовый список
атрибут row.names, включенный для совместимости с data.frame. К этому атрибуту обращаются только для запроса количества строк, любые имена строк, которые могут там храниться, игнорируются большинством методов tibble.
Поведение объектов класса tbl_df
символьные вектора не приводятся принудительно к типу факторов
имена столбцов не изменяются
Переработка происходит только для векторов длиной 1, т.к. расширение векторов длинной более 1 элемента к длинне других векторов фрейма часто приводит к ошибкам vctrs::vec_recycle()
Имена столбцов не заполняются, хотя отсутствующие имена заполняются автоматически. Пустые и дублирующиеся имена столбцов категорически не рекомендуются, но пользователь должен указать, как их разрешить. Подробнее читайте в vctrs::vec_as_names()
Имена строк не добавляются и настоятельно не рекомендуются в пользу сохранения этой информации в виде столбца. Читайте об этом в именах строк
df[, j] возвращает tibble; он не извлекает автоматически столбец внутри. значение по умолчанию - df[, j, drop = FALSE]. Подробнее читайте в разделе подмножество
Создание tibble
Аргументы:
.rows
- количество строк
.name_repair
- проверка имен столбцов
minimal
- без проверки, кроме самого наличия имени столбца
unique
- имя должно быть уникальное и не пустое
check_unique
- имя должно быть уникальное
universal
- делает имена уникальными и синтетическими
tibble
Определение
Метод создающий фрейм данных
Использование
tibble(..., .rows = NULL, .name_repair = c("check_unique", "unique", "universal", "minimal"))
a <- 1 : 5
tibble ( a , a * 2 , a , .name_repair = "universal" )
New names:
• `a` -> `a...1`
• `a * 2` -> `a...2`
• `a` -> `a...3`
# A tibble: 5 × 3
a...1 a...2 a...3
<int> <dbl> <int>
1 1 2 1
2 2 4 2
3 3 6 3
4 4 8 4
5 5 10 5
tibble_row
Определение
Метод создающий фрейм данных содержащий только одну строку. Векторные столбцы должны иметь длинну в один элемент, не векторные приводятся к типу список
Использование
tibble_row(..., .name_repair = c("check_unique", "unique", "universal", "minimal") )
tibble_row ( a = 1 , lm = lm ( Height ~ Girth + Volume , data = trees ) )
# A tibble: 1 × 2
a lm
<dbl> <list>
1 1 <lm>
tribble
Определение
Метод для создания фрейма данных строка за строкой, т.е. задать вручную данные для небольшого набора, где важна удобочитаемость примера.
tribble (
~ colA , ~ colB ,
"a" , 1 ,
"b" , 2 ,
"c" , 3
)
# A tibble: 3 × 2
colA colB
<chr> <dbl>
1 a 1
2 b 2
3 c 3
tribble (
~ a , ~ b , ~ c ,
1 , "2000-01-01" , "1.5"
) %>%
dplyr :: mutate (
dplyr :: across ( a , as.integer ) ,
dplyr :: across ( b , as.Date )
)
# A tibble: 1 × 3
a b c
<int> <date> <chr>
1 1 2000-01-01 1.5
new_tibble
Определение
Метод создающий фрейм данных, оптимизированный по производительности, проверки сведены к минимуму. Реализован на основе метода new_data_frame() из пакета vctrs
Использование
new_tibble(x, ..., nrow = NULL, class = NULL, subclass = NULL)
new_tibble ( list ( a = 1 : 3 , b = 4 : 6 ) , nrow = 3 )
# A tibble: 3 × 2
a b
<int> <int>
1 1 4
2 2 5
3 3 6
Создание матрицы
frame_matrix
Определение
Метод для создания небольших матриц, например ковариационных, где важна наглядность с расположением данных по строкам
Использование
frame_matrix(...)
frame_matrix (
~ col1 , ~ col2 ,
1 , 3 ,
5 , 2
)
col1 col2
[1,] 1 3
[2,] 5 2
Отображение tibble
print
Определение
Выводит на печать фрейм данных
Атрибуты метода:
x
- объект, который нужно отформатировать или напечатать
width
- ширина выводимого текста фрейма
n
- количество отображаемых строк
max_extra_cols
- количество дополнительных столбцов для печати сокращенной информации, если ширина слишком мала для всего текста
max_footer_lines
- максимальное количество строк нижнего колонтитула. Если значение равно NULL, используется параметр max_footer_lines.
Использование
print(x, width = NULL, ..., n = NULL, max_extra_cols = NULL, max_footer_lines = NULL)
print ( as_tibble ( mtcars ) , n = 1 , width = 50 )
# A tibble: 32 × 11
mpg cyl disp hp drat wt qsec vs
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 21 6 160 110 3.9 2.62 16.5 0
# … with 31 more rows, and 3 more variables:
# am <dbl>, gear <dbl>, carb <dbl>
print ( as_tibble ( mtcars ) , n = 3 , width = 50 )
# A tibble: 32 × 11
mpg cyl disp hp drat wt qsec vs
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 21 6 160 110 3.9 2.62 16.5 0
2 21 6 160 110 3.9 2.88 17.0 0
3 22.8 4 108 93 3.85 2.32 18.6 1
# … with 29 more rows, and 3 more variables:
# am <dbl>, gear <dbl>, carb <dbl>
view
Определение
Выводит отображение фрейма данных в отдельное окно. Опять же не так актуально при работе с данными в блокноте.
view ( as_tibble ( mtcars ) , title = 'Date frame' , n = 10 )
Обработка векторов
num
Определение
Создает числовой вектор, которорый можно отформатировать
Атрибуты метода:
x
- числовой вектор
sigfig
- задает количество значащих цифр, не комбинируется с digits
digits
- количество отображаемых цифр после десятичных знаков, не комбинируется с sigfig
label
- метка столбца вместо отображения типа
scale
- множитель применяемый перед отображением
notation
- нотация отображения
fit
- десятичная нотация, используется если поле содержит 13 и меньше цифр
dec
- десятичная нотация, не зависящая от ширины
sci
- научная нотация
eng
- инженерная нотация (научная нотация использующая показатели равные трем)
si
- система SI (поддерживаются префиксы между 1e-24 и 1e24)
fixed_exponent
- задает показатель степени для всех чисел в научной, инженерной системе счисления или системе SI
extra_sigfig
-
Использование
df <- tibble (
x = num ( 9 : 11 * 100 + 0.5 , label = "базовый" ) ,
x0 = num ( 9 : 11 * 100 + 0.5 , digits = 0 , label = "dig 0" ) ,
x1 = num ( 9 : 11 * 100 + 0.5 , digits = - 1 , label = "dig -1" ) ,
x2 = num ( 9 : 11 * 100 + 0.5 , digits = - 2 , label = "dig -2" ) ,
x3 = num ( 9 : 11 * 100 + 0.5 , digits = 2 , label = "dig 2" ) ,
x4 = num ( 9 : 11 * 100 + 0.5 , sigfig = 3 , label = "sig 3" ) ,
x5 = num ( 9 : 11 * 100 + 0.5 , sigfig = 4 , label = "sig 4" ) ,
x6 = num ( 9 : 11 * 100 + 0.5 , sigfig = 5 , label = "sig 5" ) ,
x7 = num ( 9 : 11 * 100 + 0.5 , scale = 10 , label = "scale 10" ) ,
x8 = num ( 9 : 11 * 100 + 0.5 , scale = 100 , label = "scale 100" ) ,
x9 = num ( 9 : 11 * 100 + 0.5 , scale = 0.1 , label = "scale 0.1" ) ,
x10 = num ( 9 : 11 * 100 + 0.5 , notation = "sci" , label = "sci" ) ,
x11 = num ( 9 : 11 * 100 + 0.5 , notation = "eng" , label = "eng" ) ,
x12 = num ( 9 : 11 * 100 + 0.5 , notation = "si" , label = "si" ) ,
x13 = num ( 9 : 11 * 100 + 0.5 , notation = "dec" , label = "dec" ) ,
)
print ( df , width = 200 )
# A tibble: 3 × 15
x x0 x1 x2 x3 x4 x5 x6 x7 x8
базовый dig 0 dig -1 dig -2 dig 2 sig 3 sig 4 sig 5 scale 10 scale 100
1 900. 900. 900.5 900.5 900.50 900. 900.5 900.5 9005 90050
2 1000. 1000. 1000.5 1000.5 1000.50 1000. 1000. 1000.5 10005 100050
3 1100. 1100. 1100.5 1100.5 1100.50 1100. 1100. 1100.5 11005 110050
x9 x10 x11 x12 x13
scale 0.1 sci eng si dec
1 90.1 9.01e2 900. e0 900. 900.
2 100. 1.00e3 1.00e3 1.00k 1000.
3 110. 1.10e3 1.10e3 1.10k 1100.
tibble (
scismall = num ( 10 ^ ( - 7 : 6 ) * 123 , notation = "sci" , fixed_exponent = - 3 ) ,
scilarge = num ( 10 ^ ( - 7 : 6 ) * 123 , notation = "sci" , fixed_exponent = 3 ) ,
scimax = num ( 10 ^ ( - 7 : 6 ) * 123 , notation = "sci" , fixed_exponent = Inf )
)
# A tibble: 14 × 3
scismall scilarge scimax
[e-3] [e3] [e8]
1 0.0123 0.0000000123 0.000000000000123
2 0.123 0.000000123 0.00000000000123
3 1.23 0.00000123 0.0000000000123
4 12.3 0.0000123 0.000000000123
5 123 0.000123 0.00000000123
6 1230 0.00123 0.0000000123
7 12300 0.0123 0.000000123
8 123000 0.123 0.00000123
9 1230000 1.23 0.0000123
10 12300000 12.3 0.000123
11 123000000 123 0.00123
12 1230000000 1230 0.0123
13 12300000000 12300 0.123
14 123000000000 123000 1.23
tibble (
default = num ( 100 + 1 : 3 * 0.001 ) ,
extra1 = num ( 100 + 1 : 3 * 0.001 , extra_sigfig = TRUE ) ,
extra2 = num ( 100 + 1 : 3 * 0.0001 , extra_sigfig = TRUE ) ,
extra3 = num ( 10000 + 1 : 3 * 0.00001 , extra_sigfig = TRUE )
)
# A tibble: 3 × 4
default extra1 extra2 extra3
<num> <num> <num> <num>
1 100. 100.001 100.0001 10000.00001
2 100. 100.002 100.0002 10000.00002
3 100. 100.003 100.0003 10000.00003
char
Определение
Создает вектор символов, который может быть отформатирован с заданной минимальной шириной или без ограничений по ширине, и в котором можно настроить стиль аббревиатуры.
Атрибуты метода:
x
- символьный вектор
min_chars
- Минимальная ширина, выделяемая для этого столбца, по умолчанию равна 15
shorten
- задает сокращение и его стиль
back
- добавляет многоточие в конце (по умолчанию)
front
- добавляет многоточие спереди
mid
- добавляет многоточие по середине
abbreviate
- использование аббревиатуры
Использование
char(x, ..., min_chars = NULL,shorten = c("back", "front", "mid", "abbreviate"))
lipsum <- unlist ( strsplit ( stringi :: stri_rand_lipsum ( 1 ) , "(?<=[.]) +" , perl = TRUE ) )
tibble (
x = char ( lipsum , min_chars = 15 ) ,
x0 = char ( lipsum , min_chars = 10 ) ,
x1 = char ( lipsum , min_chars = 10 , shorten = 'back' ) ,
x2 = char ( lipsum , min_chars = 10 , shorten = 'front' ) ,
x3 = char ( lipsum , min_chars = 10 , shorten = 'mid' ) ,
x4 = char ( lipsum , min_chars = 10 , shorten = 'abbreviate' )
)
# A tibble: 12 × 6
x x0 x1 x2 x3 x4
<char> <char> <char> <char> <char> <char>
1 Lorem ipsum dolor sit… Lorem ips… Lorem ips… … integer. Lore…eger. Lidsapsps…
2 Nec proin volutpat. Nec proin… Nec proin… …volutpat. Nec …tpat. Ncprvltpt.
3 Elementum non nisi se… Elementum… Elementum… …c sed ac. Elem…d ac. Ennselvfn…
4 Mollis justo ut sed a… Mollis ju… Mollis ju… …habitant. Moll…tant. Mjusanahb.
5 Ultricies felis adipi… Ultricies… Ultricies… … a at ex. Ultr…t ex. Ufadp,aae.
6 Orci neque sagittis c… Orci nequ… Orci nequ… …d sapien. Orci…pien. Onscv,apss
7 Torquent quis malesua… Torquent … Torquent … … quis ac. Torq…s ac. Tqmanaqac.
8 Bibendum in in vitae. Bibendum … Bibendum … …in vitae. Bibe…itae. Bbndmiivt.
9 Erat eget et nisi, no… Erat eget… Erat eget… …e, etiam. Erat…tiam. Eeen,ncv,e
10 Eu eleifend tellus to… Eu eleife… Eu eleife… …m libero. Eu e…bero. Eettpammbl
11 Et etiam feugiat cum … Et etiam … Et etiam … … cum est. Et e… est. Etetfcest.
12 Sem auctor augue moll… Sem aucto… Sem aucto… …e mollis. Sem …llis. Smacamlls.
lst
Определение
Создает список с последовательным определением компонентов и автоматической генерацией отсутствующих имен. При определении компонента можно ссылаться на компоненты, созданные ранее в вызове
Использование
lst(...)
tibble (
lst ( 1 : 3 , z = letters [ 4 : 6 ] , runif ( 3 ) )
)
# A tibble: 3 × 1
`lst(1:3, z = letters[4:6], runif(3))`
<named list>
1 <int [3]>
2 <chr [3]>
3 <dbl [3]>
enframe
Определение
преобразует именованные атомарные векторы или списки в фреймы данных с одним или двумя столбцами. Для списка результатом будет вложенный tibble со столбцом типа list. Для безымянных векторов в качестве столбца name используется естественная последовательность.
Атрибуты метода:
x
- вектор
name
, value
- имена столбцов, в которых хранятся имена и значения
Использование
enframe(x, name = "name", value = "value")
# A tibble: 3 × 2
name value
<int> <int>
1 1 1
2 2 2
3 3 3
# A tibble: 2 × 2
name value
<chr> <dbl>
1 a 5
2 b 7
enframe ( list ( one = 1 , two = 2 : 3 , three = 4 : 6 ) )
# A tibble: 3 × 2
name value
<chr> <list>
1 one <dbl [1]>
2 two <int [2]>
3 three <int [3]>
deframe
Определение
преобразует фреймы данных из двух столбцов в именованный вектор или список, используя первый столбец в качестве имени, а второй - в качестве значения. Если входные данные содержат только один столбец, возвращается безымянный вектор.
Атрибуты метода:
x
- фрейм данных с одним или двумя столбцами
Использование
deframe(x)
[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
[1] 3
Проверки
is_tibble
Определение
Проверяет относится ли объект к tibbles или его подклассу
Использование
is_tibble(x)
x <- tibble ( a = 1 : 3 )
is_tibble ( x )
validate_tibble
Определение
Выполняет проверки требований к Tibble, таких как:
длину столбцов и соответствие vectors::vec_size() данным
столбцы являютс векторами\фреймами или матрицами
наличие “минимальных” имен
Использование
validate_tibble(x)
try ( validate_tibble ( new_tibble ( trees , nrow = 3 ) ) )
Error : Tibble columns must have compatible sizes.
• Size 3: Requested with `nrow` argument.
• Size 31: Columns `Girth`, `Height`, and `Volume`.
ℹ Only values of size one are recycled.
Манипуляция данными
add_row
Определение
Добавляет новую строку во фрейм данных
Атрибуты метода:
.before, .after
- индекс строки куда нужно добавить новую строку, по умолчанию добавляет в конец
Использование
add_row(.data, ..., .before = NULL, .after = NULL)
df <- tibble ( x = 1 : 3 , y = 3 : 1 )
df
# A tibble: 3 × 2
x y
<int> <int>
1 1 3
2 2 2
3 3 1
df %>%
add_row ( x = 4 , y = 0 )
# A tibble: 4 × 2
x y
<dbl> <dbl>
1 1 3
2 2 2
3 3 1
4 4 0
df %>%
add_row ( x = 4 , y = 0 , .before = 2 )
# A tibble: 4 × 2
x y
<dbl> <dbl>
1 1 3
2 4 0
3 2 2
4 3 1
df %>%
add_row ( x = 4 : 5 , y = 0 : - 1 )
# A tibble: 5 × 2
x y
<int> <int>
1 1 3
2 2 2
3 3 1
4 4 0
5 5 -1
df %>%
add_row ( tibble_row ( x = 4 , y = 0 ) )
# A tibble: 4 × 2
x y
<dbl> <dbl>
1 1 3
2 2 2
3 3 1
4 4 0
add_column
Определение
Добавляет один или несколько столбцов во фрейм данных
Атрибуты метода:
.before, .after
- индекс или имя столбца докоторого нужно добавлять новый столбец
.name_repair
- проверка имен столбцов, типы проверок аналогичны используемым при создании tibble
Использование
add_column(.data,...,.before = NULL,.after = NULL,.name_repair = c("check_unique", "unique", "universal", "minimal"))
df <- tibble ( x = 1 : 3 , y = 3 : 1 )
df
# A tibble: 3 × 2
x y
<int> <int>
1 1 3
2 2 2
3 3 1
df %>%
add_column ( z = - 1 : 1 , w = 0 )
# A tibble: 3 × 4
x y z w
<int> <int> <int> <dbl>
1 1 3 -1 0
2 2 2 0 0
3 3 1 1 0
df %>%
add_column ( z = - 1 : 1 , .before = "y" )
# A tibble: 3 × 3
x z y
<int> <int> <int>
1 1 -1 3
2 2 0 2
3 3 1 1
Приведение типов
as_tibble
Определение
Приводит фрейм данных или матрицу к объекту tibble с классом tbl_df
Использование
```{r}
as_tibble (
x,
...,
.rows = NULL ,
.name_repair = c ("check_unique" , "unique" , "universal" , "minimal" ),
rownames = pkgconfig:: get_config ("tibble::rownames" , NULL )
)
```
# A tibble: 10 × 5
a b c d e
<dbl> <dbl> <dbl> <dbl> <dbl>
1 -0.531 -1.02 0.490 0.160 0.338
2 0.718 -0.604 0.120 -1.64 0.544
3 -1.46 0.626 0.813 -0.811 -0.409
4 -0.449 -1.36 1.48 1.59 -0.186
5 0.262 0.473 1.28 0.508 1.13
6 -1.27 0.898 0.918 -0.714 0.466
7 -0.826 -0.263 -1.02 0.503 1.07
8 -0.508 -0.0754 0.249 0.926 -0.929
9 -1.23 1.12 -1.07 2.74 1.47
10 0.575 0.901 2.14 -0.0107 -1.46
as_tibble_row
Определение
Преобразует вектор в tibble с одной строкой. Если ввод представляет собой список, все элементы должны иметь один размер
Использование `
as_tibble_row(x, .name_repair = c("check_unique", "unique", "universal", "minimal"))
as_tibble_row ( c ( a = 1 , b = 2 ) )
# A tibble: 1 × 2
a b
<dbl> <dbl>
1 1 2
as_tibble_row ( list ( c = "three" , d = list ( 4 : 5 ) ) )
# A tibble: 1 × 2
c d
<chr> <list>
1 three <int [2]>
as_tibble_row ( 1 : 3 , .name_repair = "unique" )
New names:
• `` -> `...1`
• `` -> `...2`
• `` -> `...3`
# A tibble: 1 × 3
...1 ...2 ...3
<int> <int> <int>
1 1 2 3
as_tibble_col
Определение
Преобразует вектор в tibble с одним столбцом
Использование
as_tibble_col(x, column_name = "value")
# A tibble: 3 × 1
value
<int>
1 1
2 2
3 3
as_tibble_col (
list ( c = "three" , d = list ( 4 : 5 ) ) ,
column_name = "data"
)
# A tibble: 2 × 1
data
<named list>
1 <chr [1]>
2 <list [1]>
Обработка имен строк
Рассмотрим обработку имен строк на примере фрейма данных mtcars
# A tibble: 32 × 11
mpg cyl disp hp drat wt qsec vs am gear carb
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 21 6 160 110 3.9 2.62 16.5 0 1 4 4
2 21 6 160 110 3.9 2.88 17.0 0 1 4 4
3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1
4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1
5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2
6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1
7 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4
8 24.4 4 147. 62 3.69 3.19 20 1 0 4 2
9 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2
10 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4
# … with 22 more rows
has_rownames
Определение
Проверяет есть ли во фрейме имена строк
Использование
has_rownames(.data)
remove_rownames
Определение
Удаляет имена строк из фрейма данных
Использование
remove_rownames(.data)
remove_rownames ( mtcars ) %>%
has_rownames ( )
rownames_to_column
Определение
Преобразует имена строк в столбец
Использование
rownames_to_column(.data, var = "rowname")
# A tibble: 32 × 11
mpg cyl disp hp drat wt qsec vs am gear carb
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 21 6 160 110 3.9 2.62 16.5 0 1 4 4
2 21 6 160 110 3.9 2.88 17.0 0 1 4 4
3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1
4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1
5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2
6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1
7 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4
8 24.4 4 147. 62 3.69 3.19 20 1 0 4 2
9 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2
10 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4
# … with 22 more rows
mtcars_tbl <- rownames_to_column ( mtcars , var = "car" ) %>%
as_tibble ( )
mtcars_tbl
# A tibble: 32 × 12
car mpg cyl disp hp drat wt qsec vs am gear carb
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Mazda RX4 21 6 160 110 3.9 2.62 16.5 0 1 4 4
2 Mazda RX4 … 21 6 160 110 3.9 2.88 17.0 0 1 4 4
3 Datsun 710 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1
4 Hornet 4 D… 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1
5 Hornet Spo… 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2
6 Valiant 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1
7 Duster 360 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4
8 Merc 240D 24.4 4 147. 62 3.69 3.19 20 1 0 4 2
9 Merc 230 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2
10 Merc 280 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4
# … with 22 more rows
column_to_rownames
Определение
Преобразует столбец в имена строк
Использование
column_to_rownames(.data, var = "rowname")
column_to_rownames ( mtcars_tbl , var = "car" ) %>% head ( )
# A tibble: 6 × 11
mpg cyl disp hp drat wt qsec vs am gear carb
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 21 6 160 110 3.9 2.62 16.5 0 1 4 4
2 21 6 160 110 3.9 2.88 17.0 0 1 4 4
3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1
4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1
5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2
6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1
rowid_to_column
Определение
Добавляет столбец с идентификатором и удаляет все имена строк
Использование
rowid_to_column(.data, var = "rowid")
rowid_to_column ( trees ) %>%
head ( )
# A tibble: 6 × 4
rowid Girth Height Volume
<int> <dbl> <dbl> <dbl>
1 1 8.3 70 10.3
2 2 8.6 65 10.3
3 3 8.8 63 10.2
4 4 10.5 72 16.4
5 5 10.7 81 18.8
6 6 10.8 83 19.7
Производительность
Выполним простой тест производительности объекта tibble и data.frame
# пакет для замера производительности
#| column-page-inset-left
l <- replicate ( 26 , sample ( 100 ) , simplify = FALSE )
names ( l ) <- letters
timing <- bench :: mark (
as_tibble ( l ) ,
as.data.frame ( l ) ,
tibble ( l ) ,
new_tibble ( l ) ,
check = FALSE
)
print ( timing )
# A tibble: 4 × 13
expression min median itr/s…¹ mem_al…² gc/se…³ n_itr n_gc total…⁴
<bch:expr> <bch:tm> <bch:t> <dbl> <bch:by> <dbl> <int> <dbl> <bch:t>
1 as_tibble(l) 143.2µs 152µs 6146. 7.6KB 16.9 2904 8 472ms
2 as.data.frame(l) 761.4µs 819µs 1176. 31.51KB 15.2 541 7 460ms
3 tibble(l) 267µs 349µs 2090. 1.63KB 8.36 1000 4 478ms
4 new_tibble(l) 7.3µs 9µs 82156. 256B 16.4 9998 2 122ms
# … with 4 more variables: result <list>, memory <list>, time <list>,
# gc <list>, and abbreviated variable names ¹`itr/sec`, ²mem_alloc,
# ³`gc/sec`, ⁴total_time
Расшифровка результатов:
expression
- анализируемое выражение
min
- минимальное время выполнения
median
- медиана времени выполнения
itr/sec
- расчетное количество выполнений в секунду
mem_alloc
- общий объем памяти, выделенный R при выполнении выражения
gc/sec
- количество сборок мусора в секунду
n_itr
- общее количество итераций после фильтрации сборок мусора
n_gc
- общее количество сборок мусора, выполненных за все итерации
total_time
- общее время выполнения тестов
result
- список объектов, возвращенных оцениваемым выражением
memory
- список с результатами Rprofmem()
time
- список векторов Bench_time для каждого оцениваемого выражения
gc
- список с таблицами, содержащими уровень сборки мусора (0-2, столбцы) для каждой итерации (строки).
Поддерживаемые типы данных
Atomic
logical
TRUE
lgl
-
integer
1L
int
-
double
1.5
dbl
-
character
“A”
chr
-
complex
0+1i
cpl
-
raw
as.raw(1)
raw
-
list
list(1)
list
-
named list
list(a = 1)
named list
Built-in objects
factor
factor(“A”)
fct
-
ordered
ordered(“a”)
ord
-
Date
Sys.Date()
date
-
POSIXt
Sys.time()
dttm
-
difftime
vctrs::new_duration(1)
drtn
Objects from other packages
hms
hms::hms(1)
time
-
integer64
bit64::as.integer64(1e+10)
int64
-
blob
blob::blob(raw(1))
blob
Data frames
data.frame
data.frame(a = 1)
df[,1]
-
tbl_df
tibble(a = 1)
tibble[,1]
Unchanged
AsIs
I(1L)
I
vctrs types
unspecified
vctrs::unspecified(1)
???
-
vctrs_list_of
vctrs::list_of(c(1L))
list
-
vctrs_vctr
vctrs::new_vctr(1L)
vctrs_vc
-
vctrs_partial_factor
vctrs::partial_factor(letters)
prtl_fctr
-
vctrs_partial_frame
vctrs::partial_frame(a = 1)
prtl
Language objects
function
function() NULL
fn
-
symbol
quote(a)
sym
-
expression
parse(text = “a <- 1<- 2”)
expression
-
quosures
rlang::quos(a = 1)
quos
Citation BibTeX citation:
@online{practicesit2023,
author = {Best Practices IT},
title = {Tibble},
date = {2023-02-09},
langid = {en}
}
For attribution, please cite this work as:
Best Practices IT. 2023. “Tibble.” February 9, 2023.