当数据框中的日期模式匹配时,如何将随机值分配给变量



我有一个示例数据框,如下所示:

         id                date
          1 2007-04-14 03:56:12
          1 2007-04-14 03:57:13
          1 2007-04-14 03:57:18
          1 2007-04-14 03:57:19
          1 2007-04-14 03:58:04
          1 2007-04-14 04:06:12
          1 2016-07-09 10:52:12
          1 2016-07-09 10:53:13
          1 2016-07-09 10:53:18
          1 2016-07-09 10:53:19
          1 2016-07-09 10:54:04
          1 2016-07-09 11:02:12
          1 2008-10-11 12:16:12
          1 2008-10-11 12:17:13
          1 2008-10-11 12:17:18
          1 2008-10-11 12:17:19
          1 2008-10-11 12:18:04
          1 2008-10-11 12:26:12
对于日期列

中的每个日期,都有类似于日期列中示例的模式

 2007-04-14 03:56:12
 2007-04-14 03:57:13
 2007-04-14 03:57:18
 2007-04-14 03:57:19
 2007-04-14 03:58:04
 2007-04-14 04:06:12

为此,我需要 ID 列的随机数。随机数应介于 1 到 8 (1:8( 之间。

预期输出应如下所示:

 id                date
  1 2007-04-14 03:56:12
  1 2007-04-14 03:57:13
  1 2007-04-14 03:57:18
  1 2007-04-14 03:57:19
  1 2007-04-14 03:58:04
  1 2007-04-14 04:06:12
  7 2016-07-09 10:52:12
  7 2016-07-09 10:53:13
  7 2016-07-09 10:53:18
  7 2016-07-09 10:53:19
  7 2016-07-09 10:54:04
  7 2016-07-09 11:02:12
  6 2008-10-11 12:16:12
  6 2008-10-11 12:17:13
  6 2008-10-11 12:17:18
  6 2008-10-11 12:17:19
  6 2008-10-11 12:18:04
  6 2008-10-11 12:26:12

假设您的模式实际上引用了唯一日期,

library(tidyverse)
library(lubridate)
> (uniquedate = unique(date(test$dat)))
[1] "2007-04-14" "2016-07-09" "2008-10-11"
> (key = sample(uniquedate))
[1] "2016-07-09" "2008-10-11" "2007-04-14"
> test %>% 
+   mutate(date = date(dat), newid = match(date, key))
# A tibble: 18 x 4
      id dat                 date       newid
   <dbl> <dttm>              <date>     <int>
 1     1 2007-04-14 03:56:12 2007-04-14     3
 2     1 2007-04-14 03:57:13 2007-04-14     3
 3     1 2007-04-14 03:57:18 2007-04-14     3
 4     1 2007-04-14 03:57:19 2007-04-14     3
 5     1 2007-04-14 03:58:04 2007-04-14     3
 6     1 2007-04-14 04:06:12 2007-04-14     3
 7     1 2016-07-09 10:52:12 2016-07-09     1
 8     1 2016-07-09 10:53:13 2016-07-09     1
 9     1 2016-07-09 10:53:18 2016-07-09     1
10     1 2016-07-09 10:53:19 2016-07-09     1
11     1 2016-07-09 10:54:04 2016-07-09     1
12     1 2016-07-09 11:02:12 2016-07-09     1
13     1 2008-10-11 12:16:12 2008-10-11     2
14     1 2008-10-11 12:17:13 2008-10-11     2
15     1 2008-10-11 12:17:18 2008-10-11     2
16     1 2008-10-11 12:17:19 2008-10-11     2
17     1 2008-10-11 12:18:04 2008-10-11     2
18     1 2008-10-11 12:26:12 2008-10-11     2

最新更新