【问题标题】:Calculating the average of multiple entries with identical names计算具有相同名称的多个条目的平均值
【发布时间】:2019-12-17 22:39:39
【问题描述】:

不确定标题是否有意义,但我是“R”的新手,至少可以说我很困惑。正如您在下面的代码中看到的那样,我有多个具有相同名称的条目。例如,time ON 和 sample 1 出现 3 次。我想弄清楚如何计算 OD 在时间 ON 和样本 1 的平均值。我该怎么做呢?我想对数据框中的所有重复执行此操作。

提前致谢!希望我的问题有意义。

> freednaod
   time sample    OD
1    ON      1 0.248
2    ON      1 0.245
3    ON      1 0.224
4    ON      2 0.262
5    ON      2 0.260
6    ON      2 0.255
7    ON      3 0.245
8    ON      3 0.249
9    ON      3 0.244
10    0      1 0.010
11    0      1 0.013
12    0      1 0.012
13    0      2 0.014
14    0      2 0.013
15    0      2 0.015
16    0      3 0.013
17    0      3 0.013
18    0      3 0.014
19   30      1 0.018
20   30      1 0.020
21   30      1 0.019
22   30      2 0.017
23   30      2 0.019
24   30      2 0.021
25   30      3 0.021
26   30      3 0.020
27   30      3 0.024
28   60      1 0.023
29   60      1 0.024
30   60      1 0.023
31   60      2 0.031
32   60      2 0.031
33   60      2 0.033
34   60      3 0.025
35   60      3 0.028
36   60      3 0.024
37   90      1 0.052
38   90      1 0.048
39   90      1 0.049
40   90      2 0.076
41   90      2 0.078
42   90      2 0.081
43   90      3 0.073
44   90      3 0.068
45   90      3 0.067
46  120      1 0.124
47  120      1 0.128
48  120      1 0.134
49  120      2 0.202
50  120      2 0.202
51  120      2 0.186
52  120      3 0.192
53  120      3 0.182
54  120      3 0.183
55  150      1 0.229
56  150      1 0.215
57  150      1 0.220
58  150      2 0.197
59  150      2 0.216
60  150      2 0.200
61  150      3 0.207
62  150      3 0.211
63  150      3 0.209

【问题讨论】:

  • 试试aggregate(OD ~ ., freednaod, mean)
  • 谢谢!现在我的数据框没有按时间组织,我该如何重新排序我的数据框以便可以按时间组织?
  • 我发布了我的评论作为您想要的更改的解决方案

标签: r dataframe average


【解决方案1】:

通过将“时间”列转换为levelsunique 级别指定的factor,输出将按照与初始数据集中相同的顺序进行排序

aggregate(OD~ sample + time, transform(freednaod, 
         time = factor(time, levels = unique(time))), mean)[c(2, 1, 3)]

或使用dplyr

library(dplyr)
freednaod %>%
   group_by(time = factor(time, levels = unique(time)), sample) %>%  
   summarise(OD = mean(OD))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多