R pomoc w programowaniu w edycji kodu

Zadałem wiele pytań na ten temat, a wszystkie odpowiedzi były naprawdę pomocne ... ale po raz kolejny moje dane są dziwne i potrzebuję pomocy ... Zasadniczo to, co chcę zrobić, to znaleźć średnią prędkość w pewnym przedziale interwałów ... powiedzmy, że od 6 s do 40 s moja średnia prędkość wynosiłaby 5 m / s ... itd. itd. Więc wskazano mi, aby użyć tego kodu ...

library(IRanges)
idx <- seq(1, ncol(data), by=2)
# idx is now 1, 3, 5. It will be passed one value at a time to `i`.
# that is, `i` will take values 1 first, then 3 and then 5 and each time
# the code within is executed.
o <- lapply(idx, function(i) {  
    ir1 <- IRanges(start=seq(0, max(data[[i]]), by=401), width=401)
    ir2 <- IRanges(start=data[[i]], width=1)
    t <- findOverlaps(ir1, ir2)
    d <- data.frame(mean=tapply(data[[i+1]], queryHits(t), mean))
    cbind(as.data.frame(ir1), d)
})

co daje ten wynik

# > o
# [[1]]
#   start end width mean
# 1     0 400   401 1.05
# 
# [[2]]
#   start end width mean
# 1     0 400   401  1.1
# 
# [[3]]
#   start end width     mean
# 1     0 400   401 1.383333

Więc jeśli chciałbym, żeby to było co 100 s ... Po prostu się zmienięir1 <- ....., by = 401 zostaćby=100.

Ale moje dane są dziwne z powodu kilku rzeczy

moje dane nie zawsze zaczynają się od 0 s, czasami zaczynają się od 20 s ... w zależności od próbki i od tego, czy się poruszaMoje gromadzenie danych nie odbywa się co 1s lub 2s lub 3s. Stąd czasami dostaję dane 1-20 s, ale przeskakuje w ciągu 20-40 s, ponieważ próbka nie porusza się.Myślę żefindOverlaps część kodu wpływa na moje dane wyjściowe. Jak mogę się tego pozbyć bez zakłócania wyjścia?

Oto kilka danych ilustrujących moje problemy ... ale wszystkie moje prawdziwe dane kończą się w 2000 roku

Time    Speed   Time    Speed   Time    Speed
6.3 1.6 3.1 1.7 0.3 2.4
11.3    1.3 5.1 2.2 1.3 1.3
13.8    1.3 6.3 3.4 3.1 1.5
14.1    1.0 7.0 2.3 4.5 2.7
47.4    2.9 11.3    1.2 5.1 0.5
49.2    0.7 26.5    3.3 5.9 1.7
50.5    0.9 27.3    3.4 9.7 2.4
57.1    1.3 36.6    2.5 11.8    1.3
72.9    2.9 40.3    1.1 13.1    1.0
86.6    2.4 44.3    3.2 13.8    0.6
88.5    3.4 50.9    2.6 14.0    2.4
89.0    3.0 62.6    1.5 14.8    2.2
94.8    2.9 66.8    0.5 15.5    2.6
117.4   0.5 67.3    1.1 16.4    3.2
123.7   3.2 67.7    0.6 26.5    0.9
124.5   1.0 68.2    3.2 44.7    3.0
126.1   2.8 72.1    2.2 45.1    0.8

Jak widać z danych, niekoniecznie kończy się to za 60 s. Itd. Czasami kończy się dopiero na 57 itd

EDYTOWAĆ dodaj dput danych

structure(list(Time = c(6.3, 11.3, 13.8, 14.1, 47.4, 49.2, 50.5, 
57.1, 72.9, 86.6, 88.5, 89, 94.8, 117.4, 123.7, 124.5, 126.1), 
    Speed = c(1.6, 1.3, 1.3, 1, 2.9, 0.7, 0.9, 1.3, 2.9, 2.4, 
    3.4, 3, 2.9, 0.5, 3.2, 1, 2.8), Time.1 = c(3.1, 5.1, 6.3, 
    7, 11.3, 26.5, 27.3, 36.6, 40.3, 44.3, 50.9, 62.6, 66.8, 
    67.3, 67.7, 68.2, 72.1), Speed.1 = c(1.7, 2.2, 3.4, 2.3, 
    1.2, 3.3, 3.4, 2.5, 1.1, 3.2, 2.6, 1.5, 0.5, 1.1, 0.6, 3.2, 
    2.2), Time.2 = c(0.3, 1.3, 3.1, 4.5, 5.1, 5.9, 9.7, 11.8, 
    13.1, 13.8, 14, 14.8, 15.5, 16.4, 26.5, 44.7, 45.1), Speed.2 = c(2.4, 
    1.3, 1.5, 2.7, 0.5, 1.7, 2.4, 1.3, 1, 0.6, 2.4, 2.2, 2.6, 
    3.2, 0.9, 3, 0.8)), .Names = c("Time", "Speed", "Time.1", 
"Speed.1", "Time.2", "Speed.2"), class = "data.frame", row.names = c(NA, 
-17L))

questionAnswers(1)

yourAnswerToTheQuestion