簡體   English   中英

在 R 中如何平均兩行,但僅適用於特定列

[英]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.

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