簡體   English   中英

數據整理以映射錄音中音符的時間和頻率

[英]Data wrangling to map timing and frequency of the notes in a recording

我有一個數據集,其中包含 216 個錄音文件,由開始和結束時間(以秒為單位)以及雄鳥和雌鳥唱出的音符的各自頻率表示:

筆記 聲音文件 開始 結尾 頻率 性別
1 一個 2.7 3.2 1.55 F
2 一個 3.2 3.6 1.17
3 一個 3.6 4.0 1.17 F
4 一個 3.9 4.3 0.89
5 一個 4.3 4.4 0.79 F
1 b 1.9 2.3 1.45 F
2 b 2.4 2.7 3.71
3 b 2.6 3.1 1.36 F
4 b 3.1 3.4 3.62
5 b 3.9 4.4 0.79
6 b 4.5 4.6 1.17 F

我需要將數據轉換為長格式,每次記錄的雄性和雌性鳥類的時間映射頻率值,例如:

聲音文件 時間 F
一個 2.7 0 1.55
一個 2.8 0 1.55
一個 2.9 0 1.55
一個 3.0 0 1.55
一個 3.1 0 1.55
一個 3.2 1.17 0
一個 3.3 1.17 0

我嘗試了以下代碼,但它沒有工作並遇到錯誤:

錯誤: summarise()輸入..1有問題。 未找到 x 對象“頻率”:

代碼:

cum_call1 <- function(start,end,freq){
  data.frame(time = seq(start,end,by = .1), calling = 1, freq= mean(freq))
}

cum_expand1 <- function(start,end){
  data.frame(time = seq(start,end,by = .1))
}

data.frame$start <- round(data.frame$start,1)
data.frame$end <- round(data.frame$end,1)


duet_call <- data.frame %>% 
  group_by(sound.files,sex,note) %>% 
  summarise(cum_call1(start,end,freq)) %>% 
  ungroup() %>% 
  select(-note)

有什么正確/更好的方法嗎? 歡迎任何建議! 提前致謝!

不是基於 R,而是來自 tidyverse 包之一的 pivot_wider 函數應該有所幫助。 當一列(性別)變成兩列時,您正在將列旋轉得更寬而不是更長。(m,f)

library(tidyverse)

pivot_wider(data,names_from=sex,values_from=freq)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM