2 つのデータセットのデータのマージ

2 つのデータセットのデータのマージ

2つのデータセットをマージしようとしています。

ファイル1は単一の列です。

JDay list 1 to 366

ファイル2には3つの列があります。

2002 1  9.5938
2002 2  9.5938
2002 3  -28672.0000
2002 5  -28672.0000

JDAY 4が欠落しているファイル2の例に示すように、データが失われる可能性があります。これら2つのファイルを一緒に入れ、正しいJDAYフラグを一致させ、データを印刷したいと思います。また、欠落したデータフラグが-9999の場合は、欠落しているJDAYSも含めて欠落している日付を知りたいと思います。

新しいファイルは次のようになります...

2002 1  9.5938
2002 2  9.5938
2002 3  -28672.0000
2002 4  -9999
2002 5  -28672.0000

ありがとう

ベストアンサー1

これはうまくいきます

merge.awk次のコードを含むファイルを作成します。

BEGIN{
    getline<ARGV[1]; l=$3; r=$5; ARGV[1]=""
}
$1 != year { if (x) while(x <= r) print year, x++, -9999
    year=$1
    x=l
}
$2 < l{
    print
    next
}
{
    while($2 > x) print year, x++, -9999
    print
    ++x
    next
}
$2 > r{
    while(x <= r) print year, x++, -9999
    print
    next
}
END{
    while(x <= r) print year, x++, -9999
}

続いて

awk -f merge.awk file1 file2

おすすめ記事