[英]Summarize Dates into Varying Groups
我有一个提供杂项日期的变量。 我想总结一下这些,以便在将它们用于预测模型之前将它们分解。
我想按以下方式对日期进行分组:
我对 R 很陌生,因此非常感谢您对此的任何帮助。 谢谢
正如其他评论者所指出的,您没有提供任何数据或可重复的示例,但无论如何让我们试一试。
我将使用两个 tidyverse 包dplyr
和lubridate
来帮助我们。
出于目前的目的,让我们首先生成一些随机日期并将它们放入数据框/tibble 中。 正如 Gregor 上面指出的那样,我假设您的日期已经在正确类的数据框中。
data <- tibble(date = sample(seq(as.Date('2015-01-01'), as.Date('2020-12-31'), by="day"), 50))
现在让我们使用dplyr
和lubridate
将日期重新编码为一个新变量date_group
:
data %>%
mutate(date_group = factor(
case_when(
year(date) == year(today()) ~ "This Year",
year(date) == year(today()) - 1 ~ "Last Year",
year(date) < today() - years(3) ~ "Over 3 Years Ago",
TRUE ~ "Other"
)
))
对于前两组,我们将使用lubridate
函数year()
(从日期中提取年份)应用于data
的date
列,并将其与从今天日期提取的年份(使用today()
)进行比较。
对于 3 年前的日期,我们使用years()
从今天的日期减去 3 年(注意这与今年和去年基于日历年的计算不同years()
。
当然,这会为少于 3 年前但多于 1 个日历年前的日期留下空白。 我们在case_when
函数中有一个默认选项,将其指定为“其他”。
我们将case_when
函数的结果包装在factor()
以便将结果组视为一个因子,而不是准备好进行后续建模的字符串。
如果您只有几个类别,则case_when
函数很有用(并且易于阅读)。 太多了,它变得太乱了,你应该考虑另一种方法来重组你的数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.