1

我正在寻找一种在 R 中完成类似于 SQL 中的 CASE - WHEN 功能的方法。有一个与收入范围相关的变量,我需要创建两个新变量,其值为该范围的最小值和最大值。下面的代码不完全是 R 也不完全是 SQL,而是中间的东西。希望很清楚我想要做什么。

if (INCOME_CD == "A") {
income.min <- 1000
income.max <- 14999
} else if (INCOME_CD == "B") {
income.min <- 15000
income.max <- 24999

.
} 其他 {
收入.min <- 99999
收入.max <- 999999
}

4

1 回答 1

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

编辑对 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
于 2013-01-16T19:49:20.657 回答