[英]R average of last 3 rows(values in different columns) grouping by two columns
[英]How average two rows after eachother in R but only for specific columns
我希望能夠僅根據彼此重疊的行對 odba 列和分鍾列進行平均。 例如,第 1+2 行將被平均,然后是第 2+3 行,然后是 3+4,等等。如果有人能給我一些可以做到這一點的代碼,那就太棒了。 該行的名稱只是分鍾列的平均值。
此外,從技術上講,我希望能夠每 15 分鍾進行一次 odba 測量...因此對於 15 分鍾標記,odba 測量將是 10 分鍾標記和 10 分鍾標記的平均值。 我不知道那會不會太難,因為只要解決了上述問題,我就可以按我想要的行進行過濾。
> dput(head(turtlesacc_clean.1, n= 100))
structure(list(Turtle = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), levels = c("R3L1",
"R3L11", "R3L12", "R3L2", "R3L4", "R3L9", "R4L8", "R8L1", "R8L4"
), class = "factor"), Day = structure(c(16579, 16579, 16579,
16579, 16579, 16579, 16580, 16580, 16580, 16580, 16580, 16580,
16580, 16581, 16581, 16581, 16581, 16581, 16581, 16582, 16582,
16582, 16582, 16582, 16582, 16583, 16583, 16583, 16583, 16583,
16583, 16584, 16584, 16584, 16584, 16584, 16584, 16584, 16585,
16585, 16585, 16585, 16585, 16585, 16586, 16586, 16586, 16586,
16586, 16586, 16587, 16587, 16587, 16587, 16587, 16587, 16588,
16588, 16588, 16588, 16588, 16588, 16589, 16589, 16589, 16589,
16589, 16589, 16590, 16590, 16590, 16590, 16590, 16590, 16633,
16633, 16633, 16633, 16633, 16633, 16634, 16634, 16634, 16634,
16634, 16634, 16634, 16635, 16635, 16635, 16635, 16635, 16635,
16636, 16636, 16636, 16636, 16636, 16636, 16637), class = "Date"),
Minute = c(0L, 10L, 20L, 30L, 40L, 50L, 0L, 1L, 10L, 20L,
30L, 40L, 50L, 0L, 10L, 20L, 30L, 40L, 50L, 0L, 10L, 20L,
30L, 40L, 50L, 0L, 10L, 20L, 30L, 40L, 50L, 0L, 2L, 10L,
20L, 30L, 40L, 50L, 0L, 10L, 20L, 30L, 40L, 50L, 0L, 10L,
20L, 30L, 40L, 50L, 0L, 10L, 20L, 30L, 40L, 50L, 0L, 10L,
20L, 30L, 40L, 50L, 0L, 10L, 20L, 30L, 40L, 50L, 0L, 10L,
20L, 30L, 40L, 50L, 0L, 10L, 20L, 30L, 40L, 50L, 0L, 1L,
10L, 20L, 30L, 40L, 50L, 0L, 10L, 20L, 30L, 40L, 50L, 0L,
10L, 20L, 30L, 40L, 50L, 0L), meanodba = c(0.0131682810769231,
0.0238000364166667, 0.018957617, 0.0048715435, 0.02218334225,
0.00941444583333333, 0.0714711534166667, 0.245915521, 0.213012161916667,
0.10459259375, 0.09160222825, 0.0657544175, 0.0775775118333333,
0.0520835475384615, 0.0228336625833333, 0.0267944869166667,
0.0112685870833333, 0.0327017893333333, 0.0305357829166667,
0.0447806983076923, 0.0381606105, 0.00379524925, 0.0297376309166667,
0.0132207086666667, 0.0104253506666667, 0.0175778505384615,
0.0275432004166667, 0.0318361995, 0.0726917810833333, 0.0308402895833333,
0.03358500025, 0.0800982955, 0.158703777, 0.0690775005, 0.0421694353333333,
0.0461304373333333, 0.07674433775, 0.0838157903333333, 0.0290208969230769,
0.0296452505, 0.03839616725, 0.0133708225833333, 0.0256290334166667,
0.0365729786666667, 0.0205466634615385, 0.0187344295, 0.0388302530833333,
0.0245862598333333, 0.02076905875, 0.00878493566666667, 0.00242616215384615,
0.00218942041666667, 0.0026103445, 0.00228666025, 0.00232174583333333,
0.00229049233333333, 0.00252677615384615, 0.00241023633333333,
0.0024513895, 0.0022465105, 0.0025435495, 0.002524973, 0.00349326392307692,
0.00225489175, 0.00306012908333333, 0.00324679391666667,
0.00800508075, 0.00440377016666667, 0.00414924623076923,
0.00321832183333333, 0.00332649283333333, 0.00259779133333333,
0.0120080429166667, 0.00298526025, 0.0927059689230769, 0.143522624416667,
0.126670176833333, 0.17085910675, 0.11083877025, 0.0995038140833333,
0.2159300075, 0.002322521, 0.1754120805, 0.08432479125, 0.129686415083333,
0.125385988333333, 0.0917711481666667, 0.0774774747692308,
0.0839409246666667, 0.0531362301666667, 0.088240564, 0.0529548980833333,
0.0974778426666667, 0.0376906349230769, 0.0315978985833333,
0.01603981125, 0.0509367594166667, 0.00611242633333333, 0.0624609059166667,
0.0333324461666667)), class = c("grouped_df", "tbl_df", "tbl",
"data.frame"), row.names = c(NA, -100L), groups = structure(list(
Turtle = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), levels = c("R3L1", "R3L11",
"R3L12", "R3L2", "R3L4", "R3L9", "R4L8", "R8L1", "R8L4"), class = "factor"),
Day = structure(c(16579, 16580, 16581, 16582, 16583, 16584,
16585, 16586, 16587, 16588, 16589, 16590, 16633, 16634, 16635,
16636, 16637), class = "Date"), .rows = structure(list(1:6,
7:13, 14:19, 20:25, 26:31, 32:38, 39:44, 45:50, 51:56,
57:62, 63:68, 69:74, 75:80, 81:87, 88:93, 94:99, 100L), ptype = integer(0), class = c("vctrs_list_of",
"vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -17L), .drop = TRUE))
如果您有任何問題,請告訴我。
您可以使用樓層划分 ( %/%
) 將Minute
分成 15 分鍾的塊。 使用dplyr分組總結:
library(dplyr)
turtlesacc_clean.1 %>%
mutate(
Min15 = (Minute %/% 15) * 15,
Min15 = paste0(Min15, "-", Min15 + 14, " min")
) %>%
group_by(Turtle, Day, Min15) %>%
summarize(
across(Minute:meanodba, mean),
.groups = "drop"
)
# A tibble: 65 × 5
Turtle Day Min15 Minute meanodba
<fct> <date> <chr> <dbl> <dbl>
1 R3L1 2015-05-24 0-14 min 5 0.0185
2 R3L1 2015-05-24 15-29 min 20 0.0190
3 R3L1 2015-05-24 30-44 min 35 0.0135
4 R3L1 2015-05-24 45-59 min 50 0.00941
5 R3L1 2015-05-25 0-14 min 3.67 0.177
6 R3L1 2015-05-25 15-29 min 20 0.105
7 R3L1 2015-05-25 30-44 min 35 0.0787
8 R3L1 2015-05-25 45-59 min 50 0.0776
9 R3L1 2015-05-26 0-14 min 5 0.0375
10 R3L1 2015-05-26 15-29 min 20 0.0268
# … with 55 more rows
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.