2016-11-21 3 views
-2

У меня есть матрица из двух столбцов. Некоторые записи столбца x одинаковы, например,
x [7] == x [8] == -0.11, x [14] == x [15] == x [16] == x [17] == 0,01.Среднее вычисление некоторых элементов матрицы в R

Мой вопрос: если записи столбца x одинаковы, как я могу вычислить среднее из их соответствующих записей v? и сохранить только один x и их среднее значений v в матрице? Например, для x [7] и x [8] соответствующее среднее значение v = среднее (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

Что мы здесь делаем, просто группируем по «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 
+0

Это работает! Большое спасибо! – user7189426

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 
Смежные вопросы