特定のキーワードが一致した場合のテーブルの複数の列値の変更

特定のキーワードが一致した場合のテーブルの複数の列値の変更

次の形式のデータがあります。

38%,1,0,0   
32%,400,376.61,94.1525   
54%,400,197,49.25   
22%,1,1,100  

2番目の列が1の場合、2番目、3番目、4番目の列をNAに変更します。

38%,NA,NA,NA   
32%,400,376.61,94.1525   
54%,400,197,49.25   
22%,NA,NA,NA  

まず、1つの列を交換しようとしましたが、機能しません。

awk -F, '$2==1 {$2="NA"}1' OFS=, 

答え1

複数の列を変更するには、セミコロンで割り当てを区切ります。

$ awk -F, '$2==1 {$2="NA"; $3="NA"; $4="NA"}1' OFS=, file
38%,NA,NA,NA
32%,400,376.61,94.1525   
54%,400,197,49.25   
22%,NA,NA,NA

答え2

次のコマンドを試すことができます。

awk -F "," '$2 == "1" {$2=$3=$4="NA"}1' file

出力

38% NA NA NA
32%,400,376.61,94.1525   
54%,400,197,49.25   
22% NA NA NA

Python

#!/usr/bin/python
k=open('file','r')
for i in k:
    j=i.split(",")
    if (j[1] == "1"):
        j[1]=j[2]=j[3]="NA"
        print ",".join(j)

    else:
        print i.strip()

出力

38%,NA,NA,NA
32%,400,376.61,94.1525
54%,400,197,49.25
22%,NA,NA,NA

関連情報