【发布时间】:2016-10-12 03:16:06
【问题描述】:
想根据五个不同的语句使用 ifelse 创建一个列。
声明:
- 如果 state = "N" and "region_1" is "00" or "99",粘贴“region_2”
- 如果 state = "N" and "region_1" is NOT "00" or "99",粘贴“region_1”李>
- 如果 state = "T",粘贴 "region_1"
- 如果 state = "3",粘贴 "region"
- 如果 state = "W" and "region_1" is NOT "ED", "FL", "SG", "SY", "XP", " AL”、“AG”、“EB”或“AB”,粘贴“region_1”
模拟数据:
state = c("T","3","W", "W","W","W","W","N","N","N","Q","Q","N","Q")
region = c("CD","AB","IC","IS", "IE", "IF", "IA", "A2", "A9", "A9", "GW", "AW", "K0", "DW")
region_1 = c("DG","BC","CL","SY","ED", "FL", "AL", "23", "99", "99", "WB", "WD", "02", 'WW')
region_2 = c("00", "D1", "05", "00", "00", "01", "59", "00", "23", "24", '03', "03", "37", "03")
a <- data.frame(state, region, region_1, region_2)
我试图解决的问题:
library(dplyr)
b <- a %>% mutate(t = ifelse(state == "N" & region_1 == "99" | state == "N" & region_1=="00" , region_2,
ifelse(state == "N" & region_1 != "99" | state == "N" & region_1 != "00", region_1,
ifelse(state == "T", region_1,
ifelse(state == "3", region,
ifelse(state == "W" & region_1 != "ED" | state == "W" & region_1 != "FL" | state == "W" & region_1 != "SG" | state == "W" & region_1 != "SY" | state == "W" & region_1 != "XP" | state == "W" & region_1 != "AL" | state == "W" & region_1 != "AG" | state == "W" & region_1 != "EB" | state == "W" & region_1!= "AB", region_1,
NA))))))
问题
state == "w" 代码的输出存在问题。它无法识别我尝试的“IS NOT”并粘贴 "region_1" 而不是 NA(参见第 4:7 行)。 state == "N" 可能也发生了同样的情况,但是,模拟数据中不满足条件。正在寻找解决方案。
【问题讨论】:
标签: r if-statement nested boolean