Dplyr: ИспользованиС выраТСния для вычислСния Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 27 Π΄Π΅ΠΊ. 2015  Β·  4ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: tidyverse/dplyr

Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ столбСц demand Π² demand2 . ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ rename plyr, Π° Π½Π΅ rename dplyr:

library(dplyr)
num <- 2
BOD %>% plyr::rename(list(demand = paste0("demand", num)))  # ok

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ rename Π² dplyr ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ new = old ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с plyr, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ old = new, Π½Π΅Ρ‚ простого способа ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это с rename Π² dplyr. Π­Ρ‚ΠΎ довольно ΡƒΡ€ΠΎΠ΄Π»ΠΈΠ²ΠΎ, Π½ΠΎ Π² любом случаС Π²Ρ‹Π΄Π°Π΅Ρ‚ сообщСниС ΠΎΠ± ошибкС:

library(dplyr)
num <- 2
BOD %>% do({ L <- setNames(list("demand"), paste0("demand", num)); rename_(., L) }) # bad

Π’Π°ΠΊΠΆΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π΄Π°Π΅Ρ‚ сообщСниС ΠΎΠ± ошибкС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ нСльзя ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ΄Π΅Ρ‚ имя:

library(dplyr)
num <- 2
BOD %>% rename(list(paste0("demand", num) = demand))  # bad

На самом Π΄Π΅Π»Π΅ Π½ΠΈ rename plyr, Π½ΠΈ rename dplyr Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±Ρ‰ΠΈΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ plyr ΠΌΠΎΠΆΠ΅Ρ‚ Π»Π΅Π³ΠΊΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ выраТСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΈΠΌΠ΅Π½ΠΈ, Π° dplyr β€” Π² старом. renameCol Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ doBy ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ выраТСния ΠΊΠ°ΠΊ со старым, Ρ‚Π°ΠΊ ΠΈ с Π½ΠΎΠ²Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ синтаксис renameCol(indata, src, tgt) , Π³Π΄Π΅ src ΠΈ tgt β€” Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ символов ΠΈΠΌΠ΅Π½Π°, ΠΈ любоС ΠΈΠ· Π½ΠΈΡ… ΠΈΠ»ΠΈ ΠΎΠ±Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ слоТными выраТСниями.

# rename column named paste0(base, num) to toupper(base)
# (In this case it renames column x2 to X)
library(dplyr)
base <- "x"
num <- 2
anscombe %>% doBy::renameCol(paste0(base, num), toupper(base))

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ:

dplyr::rename(mtcars, !! new_name := mpg)

ИспользованиС := вмСсто = , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡ‡Π΅ΡΡ‚ΡŒ !! с Π»Π΅Π²ΠΎΠΉ стороны.

ВсС 4 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π‘Ρ‚Π°Π½Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ прСобразования tidyval. Бинтаксис Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

old_var <- "x"
new_var <- "y"

df %>% rename(!!old_var ~ !!new_var)

Π£ нас Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚,

это ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ сСйчас Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ?

new_name <- "y"
mtcars %>% dplyr::rename( mpg ~ !!new_name  )

Π΄Π°Π΅Ρ‚ ΠΌΠ½Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ с dplyr вСрсии 0.7.4:

Ошибка: всС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½Ρ‹

Бпасибо,

ЀСликс

это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ:

dplyr::rename(mtcars, !! new_name := mpg)

ИспользованиС := вмСсто = , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡ‡Π΅ΡΡ‚ΡŒ !! с Π»Π΅Π²ΠΎΠΉ стороны.

спасибо большоС, это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π― ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ нашСл это Π² vignette("programming") , ΠΎΡ‡Π΅Π½ΡŒ красиво написано! Π›ΡŽΠ±Π»ΡŽ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΡƒΡŽ Π²ΡΠ΅Π»Π΅Π½Π½ΡƒΡŽ.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ