Ich habe Daten zur Bauzeit von Wohnungen in Verbreitungsgebieten. Ich habe diese Daten auf meine Untersuchungsgebiete übertragen und möchte für jedes Untersuchungsgebiet die mittlere Bauzeit ermitteln. Das einzige Problem ist, dass die Informationen der Spalten die Anzahl der Wohnungen sind und ich nicht möchte, dass der Median dieser Spalten, sondern der Titel der Spalte die Zeile in ein neues Feld einfügt (oder etwas anderes, das dies anzeigt, vorzugsweise den Punkt im Text) Format, aber es ist nicht das Ende der Welt, wenn es nur eine Zahl ist, die den Zeitraum angibt.
Ich füge ein Bild der Attributtabelle mit den entsprechenden hervorgehobenen Feldern hinzu. Es gibt ein MEDIAN-Feld, aber die von mir verwendeten Daten wurden von einer anderen Person erstellt und schlecht dokumentiert. Daher bin ich mir nicht sicher, ob die Berechnung bereits durchgeführt wurde oder nicht.
(Die sieben Spalten stellen sieben nicht überlappende Zeiträume dar, die chronologisch geordnet sind. Das Feld [Median] scheint den Zeitraum zu indizieren, in dem die gesamte Konstruktion zur Hälfte abgeschlossen war, dh es zeichnet die Medianzeit auf. )
quelle
Antworten:
Angenommen, die Spalten werden in zeitlicher Reihenfolge angezeigt, zeigt die erste Zeile (zum Beispiel) an, dass die gesamte Konstruktion in jedem Zeitraum ausgeführt wurde
Der Bau war zur Hälfte um 2230/2 = 1115 abgeschlossen. Dies geschah während der Periode 4, da am Ende der Periode 3 die Summe 585 betrug, am Ende der Periode 4 die Summe 1595 und 585 <= 1115 <1595.
Dies scheint das Ergebnis der Spalte [Median] zu sein, die den Index der Periode angibt (beginnend mit 1 links).
Sie können dies in Ihrer Lieblingssprache codieren . Die Tabelle ist jedoch so klein (100 Zeilen), dass eine Tabelle praktisch ist, wenn Sie nur überprüfen möchten, was Sie in Python formeller tun oder was auch immer. So könnte es aussehen:
Die ersten drei Datenzeilen haben dieselben Werte wie Ihre. Die nächsten beiden Datenzeilen (umgeben von Leerzeilen) werden weiter unten in Ihrer Tabelle ausgewählt. Die letzten fünf Datenzeilen üben den Algorithmus ein wenig aus.
(Beachten Sie, wie in den letzten beiden Zeilen der Tabelle gezeigt, wie Excel den späteren Zeitraum auswählt, wenn die Mitte genau zwischen zwei Zeiträumen liegt. Dies ist nicht unbedingt die "richtige" Antwort, aber eine gültige.)
Hier sind die Formeln in den Spalten H: R:
Sie müssen nicht alle eingeben. Die einzige Eingabe ist:
=H2+A2
in I2. Ziehen Sie dies durch O2. Dies berechnet die kumulierten Summen. Es erfordert, dass die Spalten A: G in chronologischer Reihenfolge sind.=O2/2
in P2. Dies ergibt die Hälfte der Gesamtsumme.=Match(P2,H2:O2,1)
in Q2. Dies indiziert die Spalte, in der die Konstruktion zur Hälfte abgeschlossen war.=Offset($A$1:$G$1,0 0, Q2-1, 1, 1)
in R2. Dadurch wird die Spaltenüberschrift erhalten, die dem Index entspricht.Fügen Sie dann die
0
gesamte Spalte H ein und ziehen Sie I2: R2 nach unten auf so viele Zeilen wie nötig.Dies dient effektiv als Pseudocode für den Algorithmus. Der schwierigste Teil ist die Suche nach der Implementierung der Excel-
MATCH
Funktion. Dies erfordert jedoch kein Handwerk: Es ist nicht ineffizient, jedes Array kumulativer Summen nacheinander zu durchsuchen (und nicht mit dem bevorzugten binären Suchalgorithmus), da diese Arrays so kurz sind.quelle
Wenn Sie die Median-Spalte zurückgeben möchten, würde ich wahrscheinlich einen Python-Cursor verwenden, um durch Zeilen zu iterieren. Verwenden Sie die Felder, um eine Liste auszufüllen, und geben Sie dann das mittlere Element zurück (wird für 7 Elemente bei [3] indiziert), nachdem Sie die Funktion sortiert () in der von Ihnen erstellten Liste aufgerufen haben. Ich werde dir ein bisschen Code schreiben, wenn ich vom Mittagessen zurück bin.
quelle