【发布时间】:2019-01-15 00:52:18
【问题描述】:
我经常遇到这样的情况,我想编写包含多个条件组合的 ifelse 语句,而我最终只是写出了符合我标准的所有可能组合。我相信一定有更有效的方法来做到这一点。
observation <- c(1:3, 1:3, 1:3, 1:3)
var1 <- c(0, 0.3, 0.3, 5, -0.3, -0.6, -4, 6,-0.75, 0.75, 3, 0.75)
dat <- as.data.frame(cbind(observation, var1))
在此示例中,我有兴趣为第二次观察期间出现的极值(即大于 1 或小于 -1 的值)创建一个标志。
我希望有某种方法可以要求 R 做一些事情,比如创建一个标志 如果观察 == 2 并且 var1 > 1 或 var1
但我知道最好的办法是编写单独的嵌套 ifelse 语句,例如
dat$flag <- with(dat, ifelse(observation == 2 & var1 > 1, 1,
ifelse(observation == 2 & var1 < -1, 1, 0)))
显然这在示例案例中并不可怕,但我经常有很多组合条件——比如我想标记 2014-2018 年 9-12 年级学生的所有记录,这意味着也标记2013 年 9-11 年级学生、2012 年 9-10 年级学生和 2011 年 9 年级学生的记录。但希望这个例子能帮助大家理解:) 感谢您的帮助!
【问题讨论】:
-
ifelse(abs(var1) > 1, 1, 0)
标签: r