2015-08-24 4 views
-1

Следующий код заменяет значения Hwy> 25 с 1 в противном случае 0.dplyr мутировать заменить динамическое имя переменной

library(ggplot2) 
data(mpg) 
mpg %>% mutate(hwybin=replace(hwy>25,1,0)) 

Как бы я сделать замену с Hwy в качестве имени переменной. Что-то вроде линий:

varname <- "hwy" 
mpg %>% mutate(hwybin=replace(varname>25,1,0)) 

Я чувствую, что у меня что-то неявное. Спасибо.

+1

ах да, вы правы. Данные являются частью пакета ggplot2. – yindalon

+0

Итак, что именно вы пытаетесь сделать здесь? Вы пытаетесь создать имя 'hwybin' динамически? Или подставить 'varname' динамически? –

+0

заменить varname. – yindalon

ответ

1

Мог бы также включить комментарий в ответ (и сделать свой вопрос воспроизводимым):

library(dplyr) 
library(ggplot2) 
library(lazyeval) 

data(mpg) 

a <- mpg %>% mutate(hwybin=replace(hwy>25, 1 ,0)) 

varname <- "hwy" 
b <- mpg %>% mutate_(hwybin=interp(~replace(varname>25, 1 ,0), 
            varname=as.name(varname))) 

identical(a, b) 
## [1] TRUE 
+1

последующий вопрос. как бы я использовал одно и то же имя переменной для переименованного столбца. то есть что-то вроде этого. mpg%>% mutate_ (varname = interp (~ replace (varname> 25, 1, 0), varname = as.name (varname))) – yindalon

+0

, что было бы замечательным вопросом (прочитайте: дополнительный, новый)! – hrbrmstr

+0

опубликовал следующую информацию по адресу http://stackoverflow.com/questions/32194070/creating-a-column-with-replaced-values-using-mutate-and-dplyr. Благодарю. – yindalon

1

Я хотел бы сделать это:

library(data.table) 
mybin <- function(DF,var,thresh,suffix="bin") 
    DF %>% mutate(x = + (.[[var]] > thresh)) %>% setnames("x", paste0(var,suffix)) %>% `[` 

mpg %>% mybin("hwy",25) 

Я уверен, что есть некоторые dplyr -flavored альтернатива data.table-х setnames, но я не знаю об этом.

Смежные вопросы