Возвратите стандартное отклонение значений столбца с другим условием значения столбца LINQ - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть таблица, db.Men, которая имеет три столбца

  • nvarchar "Имя"
  • int "Возраст"
  • nvarchar "Статус"

В столбце Status есть только три значения: "Happy", "Normal" и "Bad".

Мне нужно посчитать среднее и стандартное отклонение для возрастов«Счастлив» или «Нормальный»:

using System.Linq 

var ctx     = new DataClasses1DataContext();

double? avg = (from n in ctx.men
               where n.status == "Happy"
               select n.age).Average();

int? sum    = (from n in ctx.men
               where n.status == "Happy"
               select n.age).Sum();

Я вычислил среднее значение и сумму.Как я могу вычислить стандартное отклонение в этом условном состоянии?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Я сделал это, и у меня это сработало:

int?[] array = (from a in ctx.men where a.status == "Happy" select a.age).ToArray();
double? AVG = array.Average();
double? SumOfSquaresOfDifferences = array.Select(val => (val - AVG) * (val  - AVG)).Sum();
double? SD = Math.Sqrt(Convert.ToDouble(SumOfSquaresOfDifferences) / array.Length);
0 голосов
/ 13 декабря 2018

Вставьте Happy возраст (или по одному для каждого Status) в список, а затем рассчитайте стандартное отклонение.Эта статья как хороший процесс для определения стандартного отклонения:

Стандартное отклонение универсального списка?

так что-то вроде:

var happyAges = ctx.Men.Where(i=>i.status == "Happy")Select(i=>i.age);
var happySd = CalculateStdDev(happyAges);

Также,вы можете сделать этот метод стандартного отклонения статическим и метод расширения, чтобы сделать все это в одном запросе.

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