2013-01-16 2 views
1

Я ищу способ в R, чтобы выполнить что-то похожее на функциональность CASE - WHEN в SQL. Существует переменная, связанная с диапазоном дохода, и мне нужно создать две новые переменные, значениями которых являются min и max диапазона. Код ниже не совсем R и не совсем SQL, а что-то посередине. Надеюсь, ясно, что я пытаюсь сделать.R-версия CASE-WHEN из SQL

если (INCOME_CD == "A") {
income.min < - 1000
income.max < - 14999
} еще если (INCOME_CD == "B") {
доход. мин < - 15000
доход.max < - 24999
.
.
} еще {
income.min < - 99999
income.max < - 999999
}

ответ

2

вы можете использовать switch

Здесь последнее значение является значением по умолчанию

switch (INCOME_CD , 
     A= list(income.min = 1000,income.max = 14999), 
     B =list(income.min = 15000, income.max = 24999), 
     list(income.min = 99999,income.max = 999999)) 

например

INCOME_CD <- 'A' 

код выше возвращает

$income.min 
[1] 1000 
$income.max 
[1] 14999 

EDIT разъяснения к OP

обычно мы используем этот код в функции.

get.income <- function(INCOME_CD){ 
switch (INCOME_CD , 
     A= list(income.min = 1000,income.max = 14999), 
     B =list(income.min = 15000, income.max = 24999), 
     list(income.min = 99999,income.max = 999999)) 
} 

> get.income('A') 
$income.min 
[1] 1000 

$income.max 
[1] 14999 

> get.income('B') 
$income.min 
[1] 15000 

$income.max 
[1] 24999 

> get.income('C') 
$income.min 
[1] 99999 

$income.max 
[1] 999999 
+0

Спасибо, я видел пару примеров 'switch', но это не выглядело так, как будто я сделал то, что искал. – Oliver

+0

@ Замечание: вы можете заменить INCOME_CD любым выражением R ... – agstudy

+0

Я пробовал код выше, и R дал мне это сообщение об ошибке: EXPR должен быть длиной 1 вектором – Oliver

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