我有两列矩阵。列x的一些条目是相同的,例如,
x [7] == x [8] == -0.11,x [14] == x [15] == x [16] == x [17] == 0.01。
我的问题是:如果列x的条目相同,我该如何计算其相应的v条目的平均值?并且在矩阵中只保留一个x及其v的条目的平均值?例如,对于x [7]和x [8],它们的对应平均值v = mean(v [7] + v [8])。我需要在矩阵中保留一个-0.11和相应的均值。
x v
[1,] -0.22 2.575144e-02
[2,] -0.21 1.991324e-01
[3,] -0.15 7.737715e-02
[4,] -0.15 2.470678e-02
[5,] -0.13 2.135258e-01
[6,] -0.12 1.252464e-01
[7,] -0.11 1.667752e-01
[8,] -0.11 9.163501e-03
[9,] -0.10 2.191712e-01
[10,] -0.08 1.974091e-02
[11,] -0.02 1.362226e-01
[12,] -0.01 1.623944e-04
[13,] -0.01 1.497634e-02
[14,] 0.01 1.811620e-02
[15,] 0.01 1.222637e-02
[16,] 0.01 1.668605e-02
[17,] 0.01 6.495694e-02
[18,] 0.03 2.702536e-03
[19,] 0.03 5.727469e-02
谢谢!
答案 0 :(得分:1)
基础R解决方案:
> head(aggregate(y ~ x,data=df,mean))
x y
1 -0.22 0.02580
2 -0.21 0.19900
3 -0.15 0.05105
4 -0.13 0.21400
5 -0.12 0.12500
6 -0.11 0.08808
答案 1 :(得分:0)
我们在这里做的是,只按“x”分组,然后取相应“v”的平均值。
library(data.table)
setDT(dt)[, mean(v),by = "x"]
# x V1
# 1: -0.22 0.025751440
# 2: -0.21 0.199132400
# 3: -0.15 0.051041965
# 4: -0.13 0.213525800
# 5: -0.12 0.125246400
# 6: -0.11 0.087969351
# 7: -0.10 0.219171200
# 8: -0.08 0.019740910
# 9: -0.02 0.136222600
# 10: -0.01 0.007569367
# 11: 0.01 0.027996390
# 12: 0.03 0.029988613