R 如何添加与日期对应的数字列

R 如何添加与日期对应的数字列,r,mutate,R,Mutate,我试图添加一个列,我有一个数据框,看起来像这样 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

我试图添加一个列,我有一个数据框,看起来像这样

     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
          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,具体取决于将被称为主要日期的日期。例如,日期2020年3月21日至2020年3月23日将是1,希望是这样

     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
          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函数来实现这一点,但我不确定如何将其用于日期。

如果我们有自定义日期要重新编码,请在

library(dplyr)
df1 %>% 
   mutate(Primary = case_when(Date %in% 
            c("3/21/2020", "3/22/2020", "3/23/2020")~ 1,
       TRUE ~ 2), .after = 'Date')
-输出

#        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

或者另一个选项是具有“日期”和相应“主要”值的键值数据集

keyval <- data.frame(Date = c("3/21/2020", "3/22/2020", "3/23/2020", 
 "3/24/2020"), Primary = c(1, 1, 1, 2))
数据
df1这是
cut
的情况。不过,你的约会形式似乎不太合适,所以首先我们需要

dat$Date <- as.Date(dat$Date, format="%m/%d/%Y")
dat$Date
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")