Telegram Group & Telegram Channel
Основные изменения в 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



group-telegram.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:
group-telegram.com/stats_for_science/91

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

The Securities and Exchange Board of India (Sebi) had carried out a similar exercise in 2017 in a matter related to circulation of messages through WhatsApp. There was another possible development: Reuters also reported that Ukraine said that Belarus could soon join the invasion of Ukraine. However, the AFP, citing a Pentagon official, said the U.S. hasn’t yet seen evidence that Belarusian troops are in Ukraine. Crude oil prices edged higher after tumbling on Thursday, when U.S. West Texas intermediate slid back below $110 per barrel after topping as much as $130 a barrel in recent sessions. Still, gas prices at the pump rose to fresh highs. Either way, Durov says that he withdrew his resignation but that he was ousted from his company anyway. Subsequently, control of the company was reportedly handed to oligarchs Alisher Usmanov and Igor Sechin, both allegedly close associates of Russian leader Vladimir Putin. Founder Pavel Durov says tech is meant to set you free
from us


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