Skip to main content

Moving Average Stack Overflow


Mein Ziel ist es, einen gewichteten Durchschnitt aus einer Tabelle, basierend auf einem anderen Tabellen-Primärschlüssel zu erhalten. Ich muss einen gewichteten Durchschnitt basierend auf der Länge eines Segments zu erhalten, und ich muss Werte von -1 ignorieren. Ich weiß, wie dies in SQL zu tun, aber mein Ziel ist, dies in LINQ zu tun. Es sieht so aus in SQL: Ich bin noch ziemlich neu für LINQ, und mit einer harten Zeit herauszufinden, wie ich das übersetzen würde. Das Ergebnis gewichteter Durchschnitt sollte sich auf etwa 55,3. Vielen Dank. Ich habe genug, dass ich eine Erweiterung Methode für LINQ erstellt. Nachdem Sie Ihre Teilmenge von Daten erhalten, sieht der Anruf so aus. Dies ist äußerst praktisch geworden, weil ich einen gewichteten Durchschnitt einer beliebigen Gruppe von Daten erhalten kann, die auf einem anderen Feld innerhalb desselben Datensatzes basiert. Ich überprüfe jetzt für die Division durch Null und werfen Sie eine ausführlichere Ausnahme anstatt 0 zurückzugeben. Erlaubt Benutzer, die Ausnahme zu fangen und zu behandeln, wie gebraucht. Wenn Sie sicher, dass für jeden Fremdschlüssel in Tabelle2 gibt es einen entsprechenden Datensatz in Tabelle1, dann können Sie vermeiden, dass der Beitritt nur eine Gruppe durch. In diesem Fall lautet die LINQ-Abfrage folgendermaßen: So können Sie das wheightedaverage für einen bestimmten Fremdschlüssel erhalten. Die ToList-Methode, die beim Abrufen der Datensätze aufgerufen wird, besteht darin, zu vermeiden, dass die Abfrage zweimal ausgeführt wird, während die Datensätze in den beiden separaten Sum-Operationen aggregiert werden. Ich habe im Wesentlichen eine Tabelle mit Zahlen - eine Zeitreihe von Messungen. Jede Zeile in der Tabelle hat 5 Werte für die 5 verschiedenen Kategorien und eine Summenzeile für die Summe aller Kategorien. Wenn ich den Durchschnitt jeder Spalte und Summe der Mittelwerte zusammen, sollte es gleich dem Durchschnitt der Zeilen Summen (ignoriert Rundungsfehler, natürlich) (Ive bekam einen Fall, wo die beiden Werte kommen immer aus verschiedenen um etwa 30 und Im fragen Wie verrückt ich bin.) Update: Siehe unten - ich war (etwas) verrückt und hatte einen Fehler in meinem Code. Seufzer Gefunden mein Problem - es war ein dummer Dupe Fehler in meinem Code. Ich war auf der Suche nach einem Fehler im Durchschnitt der Summenlogik, aber es war in der Summe der Mittelwerte Logik - Verweis auf die falsche Variable. Nun, trotzdem, weve demonstriert etwa 5 Wege von Sonntag, dass die Summe der Mittelwerte ist wirklich gleich dem Durchschnitt der Summen, falls das wichtig für jeden in der Zukunft ist. Antwortete am 6. Februar um 17:19 Vielleicht sollte dies als ein Update auf die Frage gehen Jeder Weg ist gut. Seien Sie auch sicher, eine Antwort jetzt zu akzeptieren, dass Ihr Problem behoben ist. Ndash Zev Chonoles Feb 7 12 at 2:15 Im Allgemeinen ist nicht richtig, es ist nur das gleiche in bestimmten Fällen. Summe (x) Summe (y) ungleich Sum (xy) n wobei n für die Gesamteintragungen x für Zeileneingaben und y für Spalteneinträge steht. Nur wahr, wenn alle ys gleich sind: (12 35) 2 1120 (13) (25) 47 Wo als ob y gleich ist (17 47) 2 514 (14) (77) 514 PS Sorry für die Entsendung von Thread Nur wollen, dass es richtig für alle anderen suchen. Eigentlich könnte Steve richtig sein. Ich gebe Ihnen ein einfaches Beispiel und dann erklären, warum intelligente Menschen können kommen mit verschiedenen Antworten, weil in einer Weise, theyre beide richtig. Erste Zeile: 5 6 Zweite Zeile: 1 2 Dritte Zeile: 3 4 Wenn Sie entweder die Summe der Mittelwerte oder den Durchschnitt der Summen, wie Daniel fragte, dann youll erhalten 7 als die Antwort. Wenn Sie jedoch die 1 verlassen, die ein Loch in Ihrer Tabelle verlässt, fällt Ihr Mittelwert der Summen auf 6 23 und Ihre Summe der Mittelwerte erhöht sich auf 8. Wenn Ihre Tabelle der Daten Leerzeichen oder fehlende Datenpunkte enthält, dann sind die beiden Fast nie das gleiche. Wenn die Tabelle der Daten gleichmäßig verteilt ist, ohne fehlende Punkte oder Löcher in der Tabelle, dann sollten sie immer die gleichen sein. Jeder kann das mit MS Excel und der RAND () Funktion testen. Generieren Sie eine Tabelle mit einer beliebigen Anzahl von rowscolumns und füllen Sie die Zeilen und Spalten mit zufälligen Zahlen oder lassen Sie es generieren Zufallszahlen für Sie. Verwenden Sie dann AVERAGE (), um die Spalten und SUM () zu addieren, um die Mittelwerte zu addieren. Dann reverse den Prozess und verwenden Sie SUM (), um die Zeilen und AVERAGE () hinzuzufügen, um die Summen zu berechnen. Wenn die Tabelle vollständig ist, dann sind die beiden Zahlen genau die gleichen. Wenn jedoch Ihre Daten aus irgendeinem Grund fehlen Einträge, dann kann es um einen großen Prozentsatz variieren. Starten Sie einfach löschen Datenpunkte in der Mitte der Tabelle und beobachten Sie die beiden Ergebnisse stark fluktuieren. Auch von Notizen ist, wenn Sie die Zeilen und Spalten Flip, dann erhalten Sie völlig verschiedene Ergebnisse, so stellen Sie sicher, dass Sie konsistent. Wenn Sie die Zeilen im obigen Beispiel durchschnittlich summieren oder die Spalten summieren oder die Summen summieren, erhalten Sie 10.5 mit einer vollständigen Tabelle und 11 bzw. 10 mit dem 1 fehlenden. Beantwortet Aug 6 12 at 21:40 Beachten Sie, dass OP schrieb in einem der Kommentare, dass es keine Leerzeichen in der Tabelle. Beachten Sie auch, dass, wenn Steve39s Antwort gelöscht wird dann niemand wissen, was Ihr erster Satz bedeutet. Ndash Gerry Myerson Aug 7 12 am 1:04 gemischte Mathe ist richtig. Nehmen Sie 3 Spalten 10 10s, 5 1s und 2,3,5,6,6,7,9,10 (8 Werte von rand), dont durchschnittliche Leerzeichen. Von avgs ist 5.67 avg für alle Werte ist 6.65. Mixed Mathe ist es ok, einen alten Thread zu beantworten. Dieses Zeug, Wahrheit oder Wahrheit, lebt für immer im Internet

Comments