现在收集到一组数据,一列为对应的时间,一列为数据点,已经知道这组数据中每隔一段时间(时间不固定)会出现一个峰值,怎么利用R语言提取出数据中的所有峰值,并且计算相邻峰值间的距离,以及对应的时间变化距离,最后得到相应的速度呢?数据如下图所示
# 安装和加载signal包,这是你第一步就要提前做好的
install.packages("signal")
library(signal)
data <- read.table(text = "02:44:42.728 2=454
02:44:42.763 2=441
02:44:42.797 2=445
02:44:42.831 Z=449
#这里后续省略", stringsAsFactors = FALSE, header = FALSE, col.names = c("Time", "Data"))
# 时间列转格式
data$Time <- as.POSIXct(data$Time, format = "%H:%M:%OS")
# 提取峰值和计算距离
peaks <- findpeaks(data$Data)
peak_distances <- diff(peaks$peakpos)
time_distances <- diff(data$Time[peaks$peakpos])
# 速度计算
speed <- peak_distances / time_distances
print(speed)