2016-11-14 2 views
3

Я новичок в R и пытаюсь перевести порядковые переменные в числовые значения. У меня есть переменная с именем «Founders_previous_company_employee_count», имеющая 3 разных записи в качестве входов - («Малый», «Средний», «Большой»), которые я записываю в 1,2,3 значения соответственно. Я попытался с помощью переоценивать функции из пакета plyr, используя приведенный ниже кодR: dplyr- ошибка в использовании функции перекодирования

startupfull$employee_count_code<-as.numeric(revalue(startupfull$Founders_previous_company_employee_count,c("Small"=1, "Medium"=2, "Large"=3))) 

, который работает отлично. Тем не менее, я пытаюсь использовать функцию recode в пакете dplyr, я получаю сообщение об ошибке.

Код:

startupfull$prevcomp_empcount_code <- as.numeric(recode(startupfull$Founders_previous_company_employee_count,c("Small"=1, "Medium"=2, "Large"=3))) 

Error- Error: All replacements must be named

Что я здесь делаю неправильно?

+0

Я предпочел бы вам с помощью коэффициента(), чтобы установить уровни, а затем применить as.numeric() к он –

ответ

0
x = c("Small", "Large", "Medium", "Large") 
as.numeric(factor(x, levels = c("Small", "Medium", "Large"))) 
[1] 1 3 2 3 
+0

фактически даже после загрузки библиотеки dplyr, recode() не отображается в среде –

+0

В моей настройке функция «recode» доступна после загрузки пакета. –

+0

@ManikandanR ответит на ваш вопрос? Следите за http://stackoverflow.com/help/someone-answers –

1

Для заданных входов в

dput(x) 

c("Small", "Large", "Medium", "Large") 

попробовать

as.numeric(recode(x, "Small" = "1", "Medium" = "2", "Large" = "3")) 
1

Это было бы более уместно в качестве комментария на ответ Aramis7d в выше, но у меня нет достаточной репутации комментировать.

В случае, если кто-то все еще запутался после прочтения этих ответов (например, я был), игнорируя тот факт, что перекодирование в числовое, вероятно, лучше всего использовать с использованием as.numeric() и factor(), как было предложено joel.wilson, решение, которое также будет работать, если перекодировка на нечисловые значения равна , просто избегайте обертывания набора пар перекодировки в c() при использовании recode() dplyr.

То есть, вместо этого:

startupfull$prevcomp_empcount_code <- 
    as.numeric(recode(startupfull$Founders_previous_company_employee_count, 
        c("Small"=1, "Medium"=2, "Large"=3))) 

Просто сделать это:

startupfull$prevcomp_empcount_code <- 
    as.numeric(recode(startupfull$Founders_previous_company_employee_count, 
         "Small"=1, "Medium"=2, "Large"=3)) 
Смежные вопросы