Таким образом, режим — это наиболее часто встречающееся число в наборе данных.
Мне уже удалось ее решить, но она может получить только 1 режим. Вот мой код:
Dim mode = inputX.GroupBy(Function(n) n).Select(Function(g) New With {.Number = g.Key, .Quantity = g.Count}).OrderByDescending(Function(o) o.Quantity).FirstOrDefault
If mode.Quantity > 1 Then
result = mode.Number.ToString() + " Quantity: " + mode.Quantity.ToString()
Else
result = "None."
End If
Теперь, несмотря на то, что я ввел 29 29 35 30 30
, который имеет 2 режима, он показывает только 29
, который является первым полученным режимом. Я хочу получить два режима или больше.
Я ломал голову и продолжал искать ответы, но у меня не получилось.
Я только начал изучать этот язык 2 дня назад.
Не работает. Кроме того, Режим — это реальный математический термин, но я, конечно, перефразирую его.
Вероятно, потому что вам нужен цикл для проверки всех объектов, у которых есть .Quantity > 1
-- Mode — это наиболее часто встречающееся число в наборе данных.
Цитирую себя из комментария в LINQ: среднее значение, медиана и мода:
Dim inputX = {29, 29, 35, 30, 30}
Dim modes = From a In
(From n In inputX
Group n By n Into g = Count()
Select g, n)
Where a.g =
(From n In inputX
Group n By n Into g = Count() Select g).Max
Select a.n
Console.WriteLine(String.Join(", ", modes))
Выходы:
29, 30
Удалить
.FirstOrDefault()
-- Режим — это выдуманный вами термин. Попробуйте перефразировать это.