我是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
提前感谢您的任何建议!
答案 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))