何百万行ものデータがあるため、スプレッドシートではこれを行うことはできません。一部のデータ行にはデータがないため、これらのデータ行をスキップする必要があります。データは .CSV 形式です。すべてのUnixツールを歓迎します。区切り記号 ""のため、AWKかもしれません。
それはまるで
awk -F " " '{ print $1 $2 $3 $4}' filename.csv
しかし、毎日最高の湿度を得る方法は何ですか? 1つのオプションがありますが、動作しません。
awk -F, 'NR==1 {next} {date=$1; humidity=$2; if (!max[date] || humidity > max[date]) {max[date]=humidity; line[date]=$0}} END {for (date in line) print line[date]}' filename.csv
データ(Airthings View Plus - デバイス上)
recorded HUMIDITY %TEMP °C
2023-08-14 23:55:48 97.01 14.65
2023-08-14 23:55:50
2023-08-14 23:58:14 97.07 14.63
2023-08-14 23:58:16
2023-08-15 0:00:46 97.02 14.62
2023-08-15 0:00:48
2023-08-15 0:03:14 97.06 14.62
2023-08-15 0:03:16
ヘッド実データ
recorded,HUMIDITY %,TEMP °C
2023-08-14 16:55:56,97.64,14.62
2023-08-14 16:55:58,,
2023-08-14 16:58:13,97.41,14.76
2023-08-14 16:58:15,,
2023-08-14 17:00:45,97.04,14.88
2023-08-14 17:00:47,,
2023-08-15 17:03:12,96.78,15.26
2023-08-15 17:03:14,,
2023-08-15 17:05:45,96.59,14.89
希望の出力
recorded HUMIDITY %TEMP °C
2023-08-14 23:58:14 97.07 14.63
2023-08-15 0:03:14 97.06 14.62
オペレーティングシステム:Debian 12 Linux
ベストアンサー1
EX.3.feb.2024 - hum.t.p.day.csv
注:Google DocsでOP全体を使用してこのアプローチを試しましたが、このcsvsql
アプローチは審美的に魅力的ですが、苦しい遅い(Millerソリューションより約600倍遅い)
あなたの例
$ cat input.csv
recorded,HUMIDITY %,TEMP °C
2023-08-14 16:55:56,97.64,14.62
2023-08-14 16:55:58,,
2023-08-14 16:58:13,97.41,14.76
2023-08-14 16:58:15,,
2023-08-14 17:00:45,97.04,14.88
2023-08-14 17:00:47,,
2023-08-15 17:03:12,96.78,15.26
2023-08-15 17:03:14,,
2023-08-15 17:05:45,96.59,14.89
csvsql
次に、Pythonベースを使用します。csvkit:
$ csvsql --query '
SELECT recorded,MAX("HUMIDITY %") AS "HUMIDITY %","TEMP °C" FROM input \
WHERE "HUMIDITY %" NOT NULL GROUP BY DATE(recorded)
' input.csv
recorded,HUMIDITY %,TEMP °C
2023-08-14 16:55:56.000000,97.64,14.62
2023-08-15 17:03:12.000000,96.78,15.26
表形式の出力の場合、結果をパイプしますcsvformat -T
。
または、装飾 - 並べ替え - 装飾解除方法を使用してください。ミラー
$ mlr --csvlite filter '!is_empty(${HUMIDITY %})' then \
put '$day = splitnvx($recorded, " ")[1]' then \
top -a -F -f 'HUMIDITY %' -g day then \
cut -x -f day input.csv
recorded,HUMIDITY %,TEMP °C
2023-08-14 16:55:56,97.64,14.62
2023-08-15 17:03:12,96.78,15.26
その場合は、表形式で出力する場合--csvlite
に に変更してください--icsvlite --opprint
。