首页 > 解决方案 > 如何添加与日期对应的数字列

问题描述

我正在尝试添加一列,并且我有一个看起来像这样的数据框

     Date New.Recap Site
1    3/21/2020         N  Jag
2    3/21/2020         N  Jag
3    3/22/2020         N  Jag
4    3/23/2020         N  Jag
5    3/23/2020         N  Jag
6    3/23/2020         R  Jag
7    3/23/2020         N  Jag
8    3/23/2020         N  Jag
9    3/23/2020         R  Jag
10   3/23/2020         N  Jag
11   3/23/2020         N  Jag
12   3/24/2020         N  Bla
13   3/24/2020         N  Bla
14   3/25/2020         N  Bla
15   3/25/2020         N  Bla

根据日期,我想在末尾添加另一列,即数字 1-6,具体取决于将被称为主要日期的日期。例如,日期 3/21/2020-3/23/2020 将是​​ 1,希望看起来像这样

          Date  Primary New.Recap Site
    1    3/21/2020   1      N  Jag
    2    3/21/2020   1      N  Jag
    3    3/22/2020   1      N  Jag
    4    3/23/2020   1      N  Jag
    5    3/23/2020   1      N  Jag
    6    3/23/2020   1      R  Jag
    7    3/23/2020   1      N  Jag
    8    3/23/2020   1      N  Jag
    9    3/23/2020   1      R  Jag
    10   3/23/2020   1      N  Jag
    11   3/23/2020   1      N  Jag
    12   3/24/2020   2      N  Bla
    13   3/24/2020   2      N  Bla
    14   3/25/2020   2      N  Bla
    15   3/25/2020   2      N  Bla

基本上,我有一堆日期属于 1-6 的类别,具体取决于日期。日期总是连续三天一组。对于绘图,我需要使用小学 1-6 年级的数字而不是日期。我一直在尝试使用 mutate 函数来做到这一点,但我不确定如何将它与日期一起使用。

标签: rdplyr

解决方案


这是一个案例cut。不过,您的日期似乎格式不正确,所以首先我们需要

dat$Date <- as.Date(dat$Date, format="%m/%d/%Y")

然后

dat <- transform(dat, 
                 Primary=cut(Date, c(min(Date), as.Date("2020-03-24"), max(Date)),
                             include.lowest=T, labels=1:2))
dat
#          Date New.Recap Site Primary
# 1  2020-03-21         N  Jag       1
# 2  2020-03-21         N  Jag       1
# 3  2020-03-22         N  Jag       1
# 4  2020-03-23         N  Jag       1
# 5  2020-03-23         N  Jag       1
# 6  2020-03-23         R  Jag       1
# 7  2020-03-23         N  Jag       1
# 8  2020-03-23         N  Jag       1
# 9  2020-03-23         R  Jag       1
# 10 2020-03-23         N  Jag       1
# 11 2020-03-23         N  Jag       1
# 12 2020-03-24         N  Bla       2
# 13 2020-03-24         N  Bla       2
# 14 2020-03-25         N  Bla       2
# 15 2020-03-25         N  Bla       2

数据:

dat <- structure(list(Date = structure(c(18342, 18342, 18343, 18344, 
18344, 18344, 18344, 18344, 18344, 18344, 18344, 18345, 18345, 
18346, 18346), class = "Date"), New.Recap = c("N", "N", "N", 
"N", "N", "R", "N", "N", "R", "N", "N", "N", "N", "N", "N"), 
    Site = c("Jag", "Jag", "Jag", "Jag", "Jag", "Jag", "Jag", 
    "Jag", "Jag", "Jag", "Jag", "Bla", "Bla", "Bla", "Bla")), row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", 
"14", "15"), class = "data.frame")

推荐阅读