使用多个逻辑语句创建指标变量

时间:2016-06-21 21:15:11

标签: r

我是R的新手和一般的编程。我想基于多个嵌套条件创建指标变量。我的数据如下所示:

id   city   income
 1    A      100
 2    A      65
 3    B      110
 4    B      80
 5    C      60

我想编写一个类似这样的脚本:

        if (mydata$city=="A" & mydata$income >= 90) {
            mydata$x <- 1 
    }       else if (mydata$city=="B" & mydata$income >= 100) {
            mydata$x <- 1
    }       else {
            mydata$x <- 0
}

我希望最终结果是这个

id   city  income  x
 1    A     100    1
 2    A     65     0
 3    B     110    1
 4    B     80     0
 5    C     60     0

提前感谢您的任何建议!

3 个答案:

答案 0 :(得分:1)

定义你的功能:

myfun <- function(x,y) {
        if(x == "A" & y >= 90) {
                1
        } else if(x == "B" & y >= 100) {
                1
        } else 0
}

使用 mapply

mydata$x <- mapply(myfun, mydata$city, mydata$income)

答案 1 :(得分:0)

dplyr::mutate(myData, x = ifelse((city == "A" & income >= 90) | (city == "B" & income >= 100), 1, 0))

  id city income x
1  1    A    100 1
2  2    A     65 0
3  3    B    110 1
4  4    B     80 0
5  5    C     60 0

答案 2 :(得分:0)

我们可以使用data.table

library(data.table)
setDT(df1)[, x := as.integer(city =="A" & income >= 90 | city == "B" & income >=100)]
#   id city income x
#1:  1    A    100 1
#2:  2    A     65 0
#3:  3    B    110 1
#4:  4    B     80 0
#5:  5    C     60 0

base R

df1$x <- with(df1, as.integer(city =="A" & income >= 90 | city == "B" & income >=100))