Как назначить случайные значения переменной, когда шаблон данных сопоставляется во фрейме данных? - PullRequest
1 голос
/ 09 апреля 2019

У меня есть пример фрейма данных, как показано ниже:

         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

1 Ответ

0 голосов
/ 10 апреля 2019

Предполагая, что ваш шаблон действительно ссылается на уникальную дату,

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...