У меня есть набор данных, который я хотел бы запросить и преобразовать в матрицу смежности, используя R.
Пример набора данных будет следующим:
> track_df
track sound start end
1 track1A car 1000 2000
2 track1A person 1200 1500
3 track1A car 1500 1700
4 track1A dog 2300 3000
5 track1B cat 5000 8000
6 track1B car 5500 8500
7 track1B car 7500 10000
8 track1B person 8000 9000
9 track1C dog 1300 1600
10 track1C car 1500 1800
11 track1C person 1700 2000
В примере показаны звуки записанный на дорожке с началом и концом каждого звука. Треки содержат несколько звуков.
Код для создания примера:
> track <- c('track1A', 'track1A', 'track1A', 'track1A', 'track1B', 'track1B', 'track1B', 'track1B', 'track1C', 'track1C', 'track1C')
> sound <- c('car', 'person', 'car', 'dog', 'cat', 'car', 'car', 'person', 'dog', 'car', 'person')
> start <- c(1000, 1200, 1500, 2300, 5000, 5500, 7500, 8000, 1300, 1500, 17000)
> end <- c(2000, 1500, 1700, 3000, 8000, 8500, 10000, 8000, 1300, 1500, 1700)
> end <- c(2000, 1500, 1700, 3000, 8000, 8500, 10000, 900, 1600, 1800, 2000)
> track_df <- data.frame(track, sound, start, end)
Используя набор данных, приведенный выше, мне нужно найти количество пересечений / пересечений двух звуков (в зависимости от их начала). и время окончания).
Если звук начинается или заканчивается во время другого звука в дорожке, он считается перекрывающимся.
Требуемый выходной сигнал будет примерно таким, который я могу превратить в тепловая карта или сеть.
> matrix
car person dog cat
car 2 4 1 2
person 4 0 0 0
dog 1 0 0 0
cat 2 0 0 0
Я не уверен, что будет лучшим способом приблизиться к этому или наилучшим способом преобразования исходного набора данных во что-то, что можно легко повторить и сравнить.
Возможно, я мог бы использовать dplyr
и group_by
дорожку , а затем summarise
, используя отдельную функцию для создания выходной матрицы? Я не уверен, что полностью понимаю, как работает summarise
и будет ли он повторяться для каждой комбинации звуков в дорожке .
Любая помощь будет принята с благодарностью .