STATS_FOR_SCIENCE Telegram 91
Основные изменения в tidyverse 2.0.0

Совсем недавно (31 октября) вышла новая версия R 4.3.2 и я обнаружила, что на домашнем ноутбуке сижу на версии R уже прошлого года, а значит пора обновиться. К тому же при подготовке лекции по tidyverse обнаружила, что у меня не самая актуальная версия, а ведь еще в марте вышло обновление tidyverse до 2.0.0 версии, о чем мы сегодня поговорим.

Наиболее полно описаны основные изменения в статье Mine Çetinkaya-Rundel "Teaching the tidyverse in 2023", здесь я выделю ключевые моменты.
1) lubridate стал одним из уже 9 пакетов core tidyverse, что для меня довольно удобно, потому что все время нужен для работы с датами и временем.
2) Немного изменился синтаксис функции dplyr::case_when(), теперь значение по умолчанию пишется как .default = , а не TRUE ~ , как было раньше. При этом синтаксис с TRUE все еще работает, что радует, хотя в новых скриптах стоит переходить на новый.
3) Функции if_else() и case_when() перестали быть настолько строгими с пропущенными значениями, так, раньше:
# previously
df |>
mutate(
x = case_when(
~ "value 1",
~ "value 2",
~ "value 3",
TRUE ~ NA_character_
)
)

в случае использования NA в качестве результата выражения, необходимо было прописывать тип пропущенных значений (NA_character_, NA_real_ и тп). Теперь это отменили, что неплохо, хотя мне казалось полезным контролировать тип пропущенных значений. Но если честно, ошибка была непонятная, в случае если не знаешь в чем дело.

4) Появилась возможность прописывать группировку непосредственно в функции summarise() аргументом .by.

# previously
df |>
group_by(x) |>
summarize(mean(y))


Это важно, поскольку после group_by() + summarise() датафрейм остается сгруппированным, что может повлиять на дальнейшие расчеты, и иногда необходимо разгруппировать датафрейм. Теперь, если сгруппированный датафрейм не нужен в дальнейшем, то можно написать так:

# now, optionally
df |>
summarize(
mean(y),
.by = x
)

Звучит неплохо, но связка group_by+summarise уже настолько привычна, что отвыкать придется долго.
В целом, после обновления обратная совместимость сохраняется, порадовало например, что синтаксис с TRUE в case_when() не сломался.

И помимо этого, в телеграме появилась возможность использовать подсветку синтаксиса для чанков с кодом с версии 4.11 для десктопа. Это очень круто, кто еще не сделал, обновите телеграм, код получается супер красивым и отформатированным. Для подсветки синтаксиса используются три бэктика ``` и название языка, далее код и три закрывающих бэктика. По умолчанию такое форматирование делает reprex::reprex() (про репрекс можно почитать мой пост, который не утратил актуальности).

Также планирую в ближайшие две недели продолжить запись лекций по R, так что обязательно следите за новостями!

Пишите комментарии, заценили ли обновление tidyverse и телеграма, используете ли аргумент .by вместо group_by() и любые вопросы!

#R #tidyverse
23👍126🔥6



tgoop.com/stats_for_science/91
Create:
Last Update:

Основные изменения в tidyverse 2.0.0

Совсем недавно (31 октября) вышла новая версия R 4.3.2 и я обнаружила, что на домашнем ноутбуке сижу на версии R уже прошлого года, а значит пора обновиться. К тому же при подготовке лекции по tidyverse обнаружила, что у меня не самая актуальная версия, а ведь еще в марте вышло обновление tidyverse до 2.0.0 версии, о чем мы сегодня поговорим.

Наиболее полно описаны основные изменения в статье Mine Çetinkaya-Rundel "Teaching the tidyverse in 2023", здесь я выделю ключевые моменты.
1) lubridate стал одним из уже 9 пакетов core tidyverse, что для меня довольно удобно, потому что все время нужен для работы с датами и временем.
2) Немного изменился синтаксис функции dplyr::case_when(), теперь значение по умолчанию пишется как .default = , а не TRUE ~ , как было раньше. При этом синтаксис с TRUE все еще работает, что радует, хотя в новых скриптах стоит переходить на новый.
3) Функции if_else() и case_when() перестали быть настолько строгими с пропущенными значениями, так, раньше:

# previously
df |>
mutate(
x = case_when(
~ "value 1",
~ "value 2",
~ "value 3",
TRUE ~ NA_character_
)
)

в случае использования NA в качестве результата выражения, необходимо было прописывать тип пропущенных значений (NA_character_, NA_real_ и тп). Теперь это отменили, что неплохо, хотя мне казалось полезным контролировать тип пропущенных значений. Но если честно, ошибка была непонятная, в случае если не знаешь в чем дело.

4) Появилась возможность прописывать группировку непосредственно в функции summarise() аргументом .by.

# previously
df |>
group_by(x) |>
summarize(mean(y))


Это важно, поскольку после group_by() + summarise() датафрейм остается сгруппированным, что может повлиять на дальнейшие расчеты, и иногда необходимо разгруппировать датафрейм. Теперь, если сгруппированный датафрейм не нужен в дальнейшем, то можно написать так:

# now, optionally
df |>
summarize(
mean(y),
.by = x
)

Звучит неплохо, но связка group_by+summarise уже настолько привычна, что отвыкать придется долго.
В целом, после обновления обратная совместимость сохраняется, порадовало например, что синтаксис с TRUE в case_when() не сломался.

И помимо этого, в телеграме появилась возможность использовать подсветку синтаксиса для чанков с кодом с версии 4.11 для десктопа. Это очень круто, кто еще не сделал, обновите телеграм, код получается супер красивым и отформатированным. Для подсветки синтаксиса используются три бэктика ``` и название языка, далее код и три закрывающих бэктика. По умолчанию такое форматирование делает reprex::reprex() (про репрекс можно почитать мой пост, который не утратил актуальности).

Также планирую в ближайшие две недели продолжить запись лекций по R, так что обязательно следите за новостями!

Пишите комментарии, заценили ли обновление tidyverse и телеграма, используете ли аргумент .by вместо group_by() и любые вопросы!

#R #tidyverse

BY Статистика и R в науке и аналитике




Share with your friend now:
tgoop.com/stats_for_science/91

View MORE
Open in Telegram


Telegram News

Date: |

How to create a business channel on Telegram? (Tutorial) Those being doxxed include outgoing Chief Executive Carrie Lam Cheng Yuet-ngor, Chung and police assistant commissioner Joe Chan Tung, who heads police's cyber security and technology crime bureau. Invite up to 200 users from your contacts to join your channel In handing down the sentence yesterday, deputy judge Peter Hui Shiu-keung of the district court said that even if Ng did not post the messages, he cannot shirk responsibility as the owner and administrator of such a big group for allowing these messages that incite illegal behaviors to exist. ‘Ban’ on Telegram
from us


Telegram Статистика и R в науке и аналитике
FROM American