我已经将开关用于一些简单的条件,其中变量等于各种值,但是无法弄清楚如何将其用于小于或大于条件,例如< / 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路线? (或者就像这样非常低效)
感谢。
答案 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)
另请注意,这会返回一个因子,因此您可能希望转换为字符串。