【问题标题】:Random selecting 20% between a time frame在时间范围内随机选择 20%
【发布时间】:2020-07-14 18:51:13
【问题描述】:

我有很多录音要分析,但没有足够的时间浏览每个录音的全部内容。所以现在我想在 R 中做的是在其中放置一个 CSV 文档。带有文件名和录制的持续时间。例如:

现在我希望 R 为每个文件随机选择 20% 的持续时间。然后将这些数字与文件名放在一个新表中。这可以在 R 中做到吗?

【问题讨论】:

  • 您好,感谢您提出问题。如果您可以通过代码 sn-ps 详细描述您正在尝试做什么以及您面临的确切问题是什么,那么 SO 社区将会更有帮助。这应该会有所帮助 - stackoverflow.com/help/how-to-ask

标签: r random sampling duration


【解决方案1】:

如果我理解正确;首先我们将总长度转换为持续时间对象;之后我们计算长度的 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)     

【讨论】:

    猜你喜欢
    • 2012-12-21
    • 2019-08-24
    • 2013-11-13
    • 2015-07-09
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多