Добавить метки переменных в mutate - PullRequest
0 голосов
/ 13 декабря 2018

Я нахожусь в процессе доработки старого кода, чтобы облегчить изучение tidyverse.В предыдущем коде я сделал бы новые переменные производными от существующих переменных, и я бы дал этим новым переменным атрибут label, используя label из пакета Hmisc.Это будет выглядеть следующим образом.

library(Hmisc)

iris$new <- ifelse(iris$Species == 'setosa', 1, 0)
label(iris$new) <- "New Variable"

, который дает этот результат

> str(iris$new)
 'labelled' num [1:150] 1 1 1 1 1 1 1 1 1 1 ...
 - attr(*, "label")= chr "New Variable"

enter image description here

Мне было интересно, если естьспособ применить этот же тип вещи в вызове mutate.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Это немного уродливо, но вы также можете сделать

iris %>% 
mutate(new =`label<-`(ifelse(Species == 'setosa', 1, 0), value="New Variable")) 

Это не обойдет ни одну из проверок, которые label<- делает по умолчанию, чтобы структура пропускала.Вы также можете обернуть это в функцию, чтобы сделать его чище.

labelled <- function(x, label) {
  label(x) <- label
  x
}
iris %>% 
  mutate(new =labelled(ifelse(Species == 'setosa', 1, 0), "New Variable"))
# or
iris %>% 
  mutate(new =ifelse(Species == 'setosa', 1, 0) %>% labelled("New Variable")) 
0 голосов
/ 13 декабря 2018

Мы можем использовать structure():

library(Hmisc)
library(dplyr)

iris <- iris %>% 
  mutate(new = structure(ifelse(iris$Species == 'setosa', 1, 0), label = "New Variable"))

label(iris$new)
#[1] "New Variable"
...