使用R开关小于或大于?

时间:2015-03-14 20:06:19

标签: r

我已经将开关用于一些简单的条件,其中变量等于各种值,但是无法弄清楚如何将其用于小于或大于条件,例如< / p>

if (thedate >= as.Date("1981-01-20") & thedate < as.Date("1989-01-20")) {
  thepres <- "Reagan"}
if (thedate >= as.Date("1989-01-20") & thedate < as.Date("1993-01-20")) {
  thepres <- "George HW Bush"}
if (thedate >= as.Date("1993-01-20") & thedate < as.Date("2001-01-20")) {
  thepres <- "Clinton"}
if (thedate >= as.Date("2001-01-01") & thedate < as.Date("2009-01-20")) {
  thepres <- "George W Bush"}
if (thedate >= as.Date("2009-01-01")) {
  thepres <- "Obama"}

(我知道那些应该是嵌套的ifelse语句,但我发现超过3或4个难以编码和跟随)。

有没有办法在这种情况下使用开关,还是我必须使用嵌套的ifelse路线? (或者就像这样非常低效)

感谢。

1 个答案:

答案 0 :(得分:3)

函数cut非常适合这种情况。 (我没有包括所有的总统,但希望你能得到这个想法)

thedate <- as.Date("1982-02-01")
thepresident <- cut(thedate, 
    c(as.Date("1981-01-20"), as.Date("1989-01-20"), as.Date("1993-01-20")), 
    labels=c("Reagan", "George HW Bush"), right=F)

另请注意,这会返回一个因子,因此您可能希望转换为字符串。