Вычислить нормализованный счет с формулой Google Sheet - PullRequest
0 голосов
/ 27 июня 2019

У меня есть электронная таблица, которая выглядит следующим образом:

        Score1    Score2    Score3
Joe          8         5         3 
Jane         4         6         2
Abdul        5         5         3
Nadia        9         7         5

Я хочу вычислить новый столбец, содержащий «средний нормализованный балл» (ANS) для каждого человека, где для каждого балла я получаю «нормализованный балл "путем вычитания среднего значения и деления на стандартное отклонение по этому столбцу баллов, а затем усреднение этих нормированных баллов для получения ANS на человека.

Результат должен быть:

        Score1    Score2    Score3        ANS
Joe          8         5         3     -0.135
Jane         4         6         2     -0.686
Abdul        5         5         3     -0.621
Nadia        9         7         5      1.44

Псевдокод Python-esque для этой операции будет:

for j in [1..N_cols]:
    mean_scores = mean(score[i, j] for i in [1..N_rows])
    std_scores = std(score[i, j] for i in [1..N_rows])
    for i in [1..N_rows]:
        norm_scores[i, j] = (scores[i, j] - mean_scores)/std_scores

for i in [1..N_rows]:
    avg_norm_scores[i] = mean(norm_scores[i, j] for j in [1..N_cols])

Или в numpy это будет просто:

avg_norm_scores = ((scores - scores.mean(axis=0))/scores.std(axis=0)).mean(axis=1)

Каким самым кратким способом я мог бы вычислить новый столбец, содержащий ANS в листах Google?

1 Ответ

1 голос
/ 28 июня 2019

Возможно, не самый лаконичный, но правильный ответ:

=average((B2-average(B:B))/STDEVP(B:B),(C2-average(C:C))/STDEVP(C:C),(D2-average(D:D))/STDEVP(D:D))

скопировано, чтобы удовлетворить, предполагая, что 8 находится в B2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...