Случайный выбор 20% между временными рамками - PullRequest
0 голосов
/ 02 апреля 2020

У меня много записей для анализа, но не хватает времени go для каждой записи. Итак, теперь я хотел бы сделать в R документ CSV. С именем файла и продолжительностью записи. Например:

enter image description here

Теперь я хотел бы, чтобы R сделал случайный выбор 20% продолжительности для каждого файла. А затем поместите эти цифры в новую таблицу с именем файла. Можно ли это сделать в R?

1 Ответ

0 голосов
/ 02 апреля 2020

Если я правильно понимаю; сначала мы конвертируем общую длину в объект продолжительности; после этого мы рассчитываем 20% длины; затем мы используем случайную выборку из равномерного распределения (runif функция), чтобы выбрать место для начала, которое должно быть где-то между началом и концом минус размер выборки,

library(lubridate)
library(dplyr)

foo = tibble(duration = c("00:22:11", "00:00:48", "00:25:00"))

foo %>% mutate(recording_duration = duration(as.duration(hms(duration)))) %>%
  mutate(sample_size = recording_duration*.2) %>%
  mutate(random_sample_start = runif(1)*(recording_duration-sample_size)) %>%
  mutate(random_sample_start_hms = seconds_to_period(random_sample_start)) %>%
  mutate(random_sample_end = seconds_to_period(random_sample_start + sample_size )) %>%
  select(duration, random_sample_start_hms, random_sample_end, sample_size)

, и это выглядит как это:

# A tibble: 3 x 4
  duration random_sample_start_hms random_sample_end     sample_size           
  <chr>    <Period>                <Period>              <Duration>            
1 00:22:11 17M 22.8747033467516S   21M 49.0747033467517S 266.2s (~4.44 minutes)
2 00:00:48 37.6093056052923S       47.2093056052923S     9.6s                  
3 00:25:00 19M 35.290800165385S    24M 35.290800165385S  300s (~5 minutes)     
...