Häufigkeit von Werten

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von frautomke.

    Häufigkeit von Werten

    Hallo,

    das da ganz unten ist zurzeit mein Code. Er liefert mir, ab einer bestimmten Stelle (***), alle Zeilen und über Values später auch einzelne Werte einer Zeile.

    Der Datensatz sieht ungefähr so aus:

    3844500 2924500 1 1 1 -0.5 1025 146 2.7 4 3.6 96 0 0 199 -290 0
    3844500 2924500 1 1 2 -2.0 1025 127 2.5 2 3.2 97 0 0 193 -290 0
    3844500 2924500 1 1 3 -3.0 1025 115 2.5 2 2.9 98 0 0 187 -289 0
    3844500 2924500 1 1 4 -2.9 1024 121 2.8 2 2.9 98 0 0 187 -289 0
    3844500 2924500 1 1 5 -2.7 1023 126 2.9 2 3.0 98 0 0 198 -290 0

    Jetzt möchte ich aus der ersten Zeile die rot markierten Werte nehmen und alle anderen Zeilen damit durchlaufen, das Vorkommen zählen und die Zeilen mit den gleichen Werten zusammenfassen.

    Allerdings bin ich erst Anfänger und hab einen riesen Knoten im Kopf ?( - kann mir jemand auf die Sprünge helfen?

    Visual Basic-Quellcode

    1. Public Class Data
    2. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    3. Using dlg As New OpenFileDialog()
    4. dlg.Filter = "Dat Files|*.dat|All Files|*.*"
    5. If dlg.ShowDialog() <> DialogResult.OK Then
    6. Return
    7. End If
    8. Dim found = False
    9. Dim idx As Long = 0
    10. For Each line In IO.File.ReadLines(dlg.FileName)
    11. Dim Values() = line.Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries)
    12. idx = idx + 1
    13. If line.StartsWith("***") Then
    14. found = True
    15. Continue For ' "***" selbst überlesen
    16. End If
    17. If found Then
    18. 'ListBox1.Items.Add(idx)
    19. 'ListBox1.Items.Add(line)
    20. 'ListBox2.Items.Add(Values(5))
    21. 'ListBox2.Items.Add(Values(11))
    22. End If
    23. Next
    24. End Using
    25. End Sub
    26. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    27. ListBox1.Items.Clear()
    28. ListBox2.Items.Clear()
    29. End Sub
    30. End Class


    Danke :D :rolleyes:

    Die Farbe "Rot" ist der Moderation vorbehalten. Farbe geändert. ~Trade
    8|

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Trade“ ()

    frautomke schrieb:

    Jetzt möchte ich aus der ersten Zeile die rot markierten Werte nehmen und alle anderen Zeilen damit durchlaufen, das Vorkommen zählen und die Zeilen mit den gleichen Werten zusammenfassen.
    in der ersten Zeile sind 2 Zahlen markiert.
    diese Werte finden sich in keiner der anderen Zeilen.
    Also was du sagst, was du möchtest, ergibt mir mit diesen Daten keinen sinn.
    Daher nehme ich an, dass du was anderes möchtest, als du sagst, aber ich weiß nicht wasses ist.
    Ich denke ich weiß was Du willst und zwar jede Zeile als Datensatz behandeln und dann Spaltenweise nach werten suchen. Hier gäb es mehrere Möglichkeiten.

    ​1. Du erstellst eine Klasse deren Properties mit der Anzahl der Spalten übereinstimmt und deren Name der jeweiligen Spalte entspricht. Dann erzeugst Du eine Liste dieser Klasse und fügst für jede Zeile eine neue Klasse hinzu wobei die Properties mit den einzelnen Werten jeder Zeile belegt werden Beispiel:
    Nach Zeile 1 einfügen

    VB.NET-Quellcode

    1. Private Datensatzliste as new list(of Datensatz)

    ​Nach Zeile 12

    VB.NET-Quellcode

    1. Datensatzliste.add(new Datensatz(Values())

    ​Hier ist zu beachten, daß Du die Datenverarbeitung, also das Ablegen der Einzelnen Werte aus dem Values()-Array in der New-Funktion der Klasse Datensatz durchführst.

    ​2. Es besteht auch die Möglichkeit mit localDB zu arbeiten und jede Zeile mit den Zeilenwerten anzulegen. Hierfür siehe die Anleitung vom ErfinderDesRages (die view Views usw. ) (hab grad keinen Link).

    ​Wenn das erledigt ist kannst Du eine Abfrage ber Linq durchführen und das jeweilige Ergebnis daraus weiterverarbeiten.

    Grüße
    Der Beitrag wurde aus 100% wiederverwendbaren Elektronen erstellt!
    @ErfinderDesRades Es ist ein Datensatz mit über 8000 Einträgen - ich dachte das sprengt den Rahmen, wenn ich hier alles anfüge. Es handelt sich hierbei um Wetterdaten, die stündlich über ein Jahr lang, aufgelistet wurden.

    @wolfi_bayern Danke schon mal, ich les mich mal ein wenig rein :D ( ist noch soooo früh :sleeping: )

    Aber ich möchte nicht nach Spalten suchen, sondern mit den zwei Werten, jeder (hier noch) Zeile, durch alle anderen Zeilen laufen und alle doppelten quasi zählen (z.B. alle die -0,5 °C bei 96% Luftfeuchtigkeit haben)und dann zusammenfassen.
    8|

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „frautomke“ ()

    frautomke schrieb:

    Es handelt sich hierbei um Wetterdaten, die stündlich über ein Jahr lang, aufgelistet wurden.
    ...mit zwei Werten, ... alle die -0,5 °C bei 96% Luftfeuchtigkeit haben...
    Damit kann ich was anfangen.
    Nur würde ich dir dringend raten, lies die Daten in ein typisiertes Dataset ein, und präsentiere sie im Datagridview.
    Dann haben (bekommen) die Spalten einen Namen, und du kannst Filter setzen wie wolle - für derlei Dinge ist typDataset vorgesehen, und alles andere ist dafür nicht vorgesehen.
    Dafür musst du aber einiges lernen, zunächstmal überhaupt ein geeignetes typDataset anzulegen.

    Habich hier Videos zu gemacht: vier Views-Videos
    Film#1 ist glaub relevant, und geht schon weit über deinen Bedarf hinaus.
    Weil du brauchst ja nur eine einzige Tabelle im typDataset.

    Hast du es erstmal geschafft, ein typDataset anzulegen, dann kann man auch Daten einlesen - vorher nicht, denn es gibt ja nichts, um die gelesenen Daten aufzubewahren - eine Listbox ist dafür denkbar ungeeignet.