如何计算每 x 步的平均值

How to calculate the average every x steps

如果这是一个重复的问题,我深表歉意,但我无法找到我的问题的答案。

我有一个从 0 到 475 毫米的每个毫米的数据框。我想创建一个新的 csv 文件,每 1 厘米平均一次数据,因此创建平均 0-10mm 10-20mm 等

我看到类似的东西可能使用向量而不是数据帧

有谁知道我将如何实现这一点?

我看到有人说 dplyr 可以这样使用:

n1 <- 10
iris %>% group_by(mean = (row_number() -1) %/% n1) %>%
  mutate(mean = mean(Sepal.Length))

如果我可以每 10 行分组,或者类似的方法可能会起作用

diamonds %>%
    group_by(cut) %>%
    dplyr::summarize(Mean = mean(price, na.rm=TRUE))

我需要每个单独列的平均值,数据如下所示:

structure(list(Depth = c(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 
0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 
2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3, 3.1, 3.2, 3.3, 
3.4, 3.5, 3.6, 3.7, 3.8, 3.9), AIncCoh = c(6.049230907, 5.975282432, 
5.736199822, 5.658584418, 5.659008377, 5.597103404, 5.479694824, 
5.392676342, 5.766141707, 5.587877013, 5.923228066, 6.083677805, 
6.370731845, 6.299689957, 6.540310037, 6.76014416, 6.64052669, 
6.722735675, 6.538929311, 6.600849788, 6.537525808, 6.472332356, 
6.451542164, 6.314029783, 6.326980578, 6.427467369, 6.386539147, 
6.324748515, 6.174247704, 6.115741782, 5.940887624, 5.926674295, 
6.011768504, 6.259105537, 6.293339228, 6.507754408, 6.568542262, 
6.332767248, 6.323517, 6.45046208), BFeIncCoh = c(0.533952007, 
1.04123504, 1.575552754, 1.887597729, 2.467136771, 2.507664907, 
3.152474986, 3.59568144, 1.619560271, 1.446736541, 0.998453458, 
0.708287575, 0.75013817, 0.716823288, 0.446906747, 0.276885553, 
0.318712042, 0.412030825, 0.661614436, 1.139646108, 1.078190702, 
1.442860329, 1.18398141, 1.344180259, 1.410589788, 1.393485583, 
1.542221239, 1.708359187, 2.021297356, 2.181852255, 1.876645293, 
1.759113298, 1.785977674, 1.76244417, 1.824628328, 1.343339815, 
1.227320351, 2.396835375, 2.067314222, 1.449669028), CAlinccoh = c(0.000640664, 
0.000266313, 0.000720408, 0.000615829, 0.000874697, 0.000796354, 
0.001251353, 0.001013647, 0.000554639, 0.000591174, 0.00044422, 
0.000299878, 0.000260988, 0.000235121, 0.000192523, 0.00041571, 
0.000288884, 4.38245e-05, 0.000584711, 0.000595545, 0.000581137, 
0.000465238, 0.000485389, 0.000468044, 0.000594975, 0.00070524, 
0.000394065, 0.000951412, 0.000870142, 0.000492213, 0.000693941, 
0.000599945, 0.000782692, 0.000551049, 0.000553618, 0.000804453, 
0.000682427, 0.000835408, 0.000654415, 0.00066155), DPinccoh = c(0.000171267, 
7.06545e-05, 0.000397284, 0.000535504, 0.000458946, 0.000640312, 
0.000649436, 0.000834147, 0.000554639, 0.000360038, 0.000374296, 
0.000360664, 0.000184227, 0.00021616, 4.12548e-05, 0.000162387, 
0.00019591, 6.068e-05, 0.000147939, 0.000412862, 0.000447883, 
0.000592121, 0.000347798, 0.000471945, 0.000480557, 0.00034684, 
0.000365917, 0.000409521, 0.000439295, 0.000654778, 0.00034697, 
0.000495607, 0.000422737, 0.000472327, 0.00044047, 0.000238506, 
0.000421499, 0.000558317, 0.000526825, 0.000610359), ECaTi = c(4.071146245, 
3.27955665, 4.395989975, 3.677383592, 3.028670721, 4.523910733, 
3.623082055, 2.428717425, 1.143992933, 1.000783699, 1.167405765, 
1.489803485, 2.019990249, 2.510752688, 2.588560886, 3.398337113, 
4.051594747, 3.648189209, 3.354673496, 3.057881773, 3.153846154, 
3.076456311, 2.402086297, 2.205960854, 2.918837068, 3.052762259, 
2.853471843, 2.970514429, 3.306431274, 3.085731415, 2.150507849, 
1.643615075, 1.171841542, 1.394634777, 1.652872777, 1.751993923, 
1.946314444, 2.140757238, 2.838143036, 3.455563331), FBrCl = c(8.04090623, 
4.306048968, 3.417836951, 3.156895904, 2.787628518, 2.059316731, 
1.665443728, 1.979686894, 1.919284294, 2.106621773, 1.984810127, 
2.381081081, 2.495918818, 2.934549961, 3.223319734, 3.661795179, 
3.680280436, 3.326894659, 2.572694701, 2.510810003, 2.61608562, 
2.485975483, 2.623981753, 2.615200819, 2.753870857, 2.911768285, 
2.810209577, 2.989661774, 2.648906468, 2.478130062, 2.772837613, 
2.87838731, 2.794758117, 2.785974974, 2.860625462, 2.834103685, 
2.685483871, 2.72094811, 2.823782043, 2.672785909), GSrCa = c(1.476699029, 
0.697333834, 0.531927024, 0.581549593, 0.584337349, 0.471223867, 
0.397348555, 0.463917526, 0.620592021, 0.668493866, 0.621082621, 
0.520657043, 0.495293266, 0.588865096, 0.523639819, 0.544261566, 
0.559851818, 0.399513776, 0.396946565, 0.373942811, 0.429853659, 
0.382840237, 0.418278721, 0.496672716, 0.438887736, 0.44448963, 
0.445296034, 0.509820486, 0.39092296, 0.365067029, 0.414126234, 
0.485529831, 0.475788031, 0.527462341, 0.38278502, 0.422935183, 
0.469789842, 0.460466084, 0.484084881, 0.434993925), HSiinccoh = c(0.000450368, 
0.000244573, 0.00075219, 0.000583699, 0.00068032, 0.000925492, 
0.000855355, 0.001963942, 0.001483778, 0.001729073, 0.001468393, 
0.001138726, 0.001093848, 0.000576426, 0.000347228, 0.000334517, 
0.000398461, 0.000249462, 0.000715038, 0.000694193, 0.000544122, 
0.000849732, 0.00089816, 0.000924387, 0.000690323, 0.000971151, 
0.000607182, 0.000959685, 0.000996862, 0.001219242, 0.000896715, 
0.0010999, 0.0015319, 0.001466701, 0.001410312, 0.001443165, 
0.00088314, 0.001401997, 0.000773774, 0.000728493), IMnFe = c(0.012176723, 
0.010329834, 0.009460859, 0.004488071, 0.0033725, 0.003435313, 
0.002524022, 0.001789815, 0.002523102, 0.002427177, 0.004737443, 
0.006345047, 0.008130081, 0.00597814, 0.003815561, 0.005911677, 
0.004938375, 0.006038094, 0.00566993, 0.005562324, 0.005153047, 
0.004540827, 0.004835627, 0.007999907, 0.009290228, 0.009745845, 
0.007576883, 0.006542547, 0.007564866, 0.01107687, 0.00868016, 
0.004918037, 0.004108234, 0.004358456, 0.003138233, 0.00340349, 
0.002135809, 0.002106807, 0.002305464, 0.005688023), JFeTi = c(332.715415, 
235.9371921, 372.726817, 390.7871397, 396.986099, 495.2624867, 
398.3075384, 348.0204394, 100.6015901, 85.02638454, 67.28021064, 
64.80608083, 95.29351536, 112.916368, 79.94710947, 64.44066515, 
90.04033771, 90.33555063, 120.2516005, 192.0689655, 179.2516923, 
227.7075243, 146.8866761, 153.3047153, 224.0163537, 224.4506518, 
209.6965555, 259.0897114, 301.7200504, 289.6696643, 192.2746999, 
148.0545188, 114.2141328, 137.4854557, 154.4213406, 126.2081276, 
130.2680017, 258.1514477, 315.1097867, 257.6221134), KZrRb = c(1.305111821, 
4.6367713, 1.986547085, 1.775510204, 5.387755102, 2.099778271, 
6.847826087, 1.760157274, 0.982819606, 1.037322515, 1.015357613, 
1.377717391, 2.261603376, 2.883275261, 3.748267898, 3.688931298, 
8.160550459, 4.390957447, 3.878865979, 2.159613059, 5.284023669, 
2.704166667, 1.433843384, 1.265707797, 1.814081408, 2.007683864, 
1.929152149, 2.484520124, 2.402555911, 1.70468948, 1.53030303, 
1.596969697, 1.258212878, 1.092152628, 1.212525667, 3.411627907, 
2.554, 1.91858679, 3.013186813, 8.751879699), Age = c(NA, NA, 
NA, NA, NA, -68, NA, NA, NA, NA, NA, NA, NA, NA, NA, -64.5, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, -63, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, -59, NA, NA, NA, NA)), row.names = c(NA, 40L), class = "data.frame")
```

你好,我不知道你的专栏是什么意思,但原则上你可以这样做

  • 创建一个值为 1,2,.. cm 的组变量

  • 按该变量分组并计算目标列的平均值

在我下面的代码中,我假设 Depth 是以厘米为单位测量的变量(它从 0.0 到 3.9,步长为 0.1)。基于 Depth 的组只需将此列的值四舍五入即可获得。 我将在我的尝试中使用 data.table(下面的代码计算所有列的平均值......您可以在 dd[, lapply(.SD, mean), by = grp] 中指定一个)。

library(data.table)
dd = data.table(data) # data is your data.frame
dd[, grp := floor(Depth)]
dd_avg = dd[, lapply(.SD, mean), by = grp]
print(dd_avg)

   grp Depth  AIncCoh BFeIncCoh    CAlinccoh     DPinccoh    ECaTi    FBrCl
1:   0  0.45 5.690180 1.9827592 0.0007325078 0.0004672228 3.117323 3.143967
2:   1  1.45 6.448082 0.6429498 0.0003361405 0.0002156380 2.728719 2.877215
3:   2  2.45 6.353116 1.5307018 0.0006007855 0.0004556655 2.902610 2.693379
4:   3  3.45 6.261482 1.7493288 0.0006819498 0.0004533617 2.014624 2.782969
       GSrCa    HSiinccoh       IMnFe     JFeTi    KZrRb Age
1: 0.6493423 0.0009668790 0.005252742 315.63711 2.781960  NA
2: 0.5024054 0.0007016292 0.005712667  97.73804 3.356514  NA
3: 0.4322129 0.0008660846 0.007432665 221.57936 2.303042  NA
4: 0.4557961 0.0011636097 0.004084271 183.38096 2.633945  NA

这只是一个例子,因为我不知道你的问题的具体细节。我认为您可以轻松地使 'logic' 适应您的问题。