我有很多要分析的记录,但是没有足够的时间来浏览每个记录的全部。所以现在我想在R中做的就是在其中放入一个csv文档。带有文件名和录制的持续时间。例如:
现在我希望R做的是为每个文件随机选择20%的持续时间。然后将这些数字与文件名一起放在新表中。在R中可以这样做吗?
干杯,西蒙妮
如果我理解正确,首先,我们将总长度转换为持续时间对象;之后,我们计算长度的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)