Ich habe eine CSV-Datei mit zwei Spalten: ‚id‘ undExtrakt aus jeder Gruppe N
eine ID ‚Werten‘ kann mehrfach in der Datei mit unterschiedlichen Werten auftreten. Ich möchte ein geschichtetes Sampling der Daten durchführen, um eine kleinere Datei zu erhalten, die genau oder höchstens N jeder ID enthält.
Beispiel Eingabe:
a 1,2,3
a 2,2,3
a 2,2,3
a 2,4,3
a 4,2,3
a 4,4,4
b 3,4,4
b 8,8,8
b 3,3,3
c 4,5,6
c 5,5,4
gewünschte Ausgabe (N = 2):
a 1,2,3
a 2,2,3
b 3,4,4
b 8,8,8
c 4,5,6
c 5,5,4
An diesem Punkt, den ich getroffen werden, nicht die IDs aus einer Gruppe kümmern, aber Bonuspunkte, wenn es ist zufällig.
Da die Textdatei kann sehr groß sein, ich einen Speicher effizient bevorzugen (Linux) Befehlszeile-Lösung (dh bash, awk, sed, etc.)
bitte fügen Sie hinzu, was Sie versucht haben, dies zu lösen ... mit 'awk', können Sie ein Array mit ID als Schlüssel verwenden und drucken, wenn dieser Schlüssel höchstens N mal gesehen wurde – Sundeep
Danke für den Tipp, bin ich nicht sehr vertraut mit awk.Ich habe eine Lösung mit Ihrem Vorschlag erstellt. – Deruijter