我有一个示例数据框,如下所示:
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