【发布时间】:2016-07-18 16:18:08
【问题描述】:
我是 R 新手,但很高兴学习它,我认为这可能是一个很好的机会。 我有两个盐度测量值(uS 和 mS.m_1.5)。我根据它们的值为每种测量类型(uSClass 和 mS.m_1.5Class)创建了 3 个类(1、2、3)。对于许多观察结果,我只有一种测量类型。 我想基于这两个类创建一个新类(SClass)。
任何观察到 uSClass = 1 和 mS.m_1.5Class = 1,都应该是 SClass 1。
任何观察到 uSClass = 1 和 mS.m_1.5Class = NA,都应该是 SClass 1。
对 uSClass = NA 和 mS.m_1.5Class = 1 的任何观察,都应该是 SClass 1。等等...
不应为任何具有冲突类(例如 uSClass = 1 和 mS.m_1.5Class = 2)的观察分配一个类 (NA)。 这是我的代码:
std$SClass <- ifelse(std$uSClass == 1 & std$mS.m_1.5Class == 1, 1,
ifelse(std$uSClass == 1 & is.na(std$mS.m_1.5Class), 1,
ifelse(is.na(std$uSClass) & std$mS.m_1.5Class == 1, 1,
ifelse(std$uSClass == 2 & std$mS.m_1.5Class == 2, 2,
ifelse(std$uSClass == 2 & is.na(std$mS.m_1.5Class), 2,
ifelse(is.na(std$uSClass) & std$mS.m_1.5Class == 2, 2,
ifelse(std$uSClass == 3 & std$mS.m_1.5Class == 3, 3,
ifelse(std$uSClass == 3 & is.na(std$mS.m_1.5Class), 3,
ifelse(is.na(std$uSClass) & std$mS.m_1.5Class == 3, 3, NA)))))))))
这对我来说合乎逻辑,但一定不正确。唯一有效的分类是 uSClass 和 mS.m_1.5Class 都有值的分类。如果我运行整个代码,大多数观察结果都被分配为 NA。我尝试了其他几种方法运营商,但那些也没有工作。 感谢您的帮助!
【问题讨论】:
-
使用正式的 if/else 语句比将
ifelse调用串在一起更好。
标签: r if-statement logical-operators