r - 根据日期范围创建新的分类变量列
问题描述
我有一个数据框,dat
包含以下列:
record_id date
<dbl> <date>
1 111111 1956-10-28
2 222222 1956-10-28
3 333333 1956-10-29
4 444444 1956-10-29
5 555555 1956-10-30
我想在其中创建一个新列,该列根据日期是否在特定范围之间采用不同的值。所需的输出是这样的:
record_id date new_var
<dbl> <date> <chr>
1 111111 1956-10-28 test1
2 222222 1956-10-28 test1
3 333333 1956-10-29 test1
4 444444 1956-10-29 test1
5 555555 1956-10-30 test1
我的第一次尝试如下:
dat <- dat %>%
mutate
new_var = ifelse(date > as.Date("1954-03-12") & date < as.Date("1958-12-08"), "test1"),
new_var = ifelse(date > as.Date("1958-09-13") & date < as.Date("1964-03-08"), "test2")
)
这并没有给我我想要的东西(请不要笑!)。谁能帮助我如何实现这一目标?
解决方案
您的ifelse
语句中几乎没有语法问题。
由于您正在使用,您可以使用和函数dplyr
来简化它。case_when
between
library(dplyr)
dat %>%
mutate(new_var = case_when(
between(date, as.Date("1954-03-13"), as.Date("1958-12-07"))~"test1",
between(date, as.Date("1958-09-14"), as.Date("1964-03-07"))~ "test2")
)
# record_id date new_var
#1 111111 1956-10-28 test1
#2 222222 1956-10-28 test1
#3 333333 1956-10-29 test1
#4 444444 1956-10-29 test1
#5 555555 1956-10-30 test1