-1

助けが必要です。それぞれ約 1500 のデータ ポイントを持つ 3 つの試行を含むデータ ファイル (パイロット被験者) があります。各試行は、1500 データ ポイントに切り詰める必要があります。私が使用しているコードと、以下のデータ ファイルのサンプルを含めます。どんな助けでも大歓迎です。

    `BEGIN{ SKIP=0}
{ 
if ( $1=="MSG" && SKIP==0 )
{
    FS=" "
    printf("\n%s",$6)
    SKIP=1;
}
else if ( $1=="MSG" && SKIP==1 )
{
    FS=" "
    printf(" %d",$6)
    SKIP=0;
}
else

    FS="\t"
    printf(" %.2f",($3+$4)/2)

}
}


`MSG    1   # Message: bince.bmp                
 MSG    1   # Message: 103              
 SMP    1   0   0   0   0   0
 SMP    1   0   0   0   0   0
 SMP    1   0   0   0   0   0
 SMP    1   0   0   0   0   0
 SMP    1   0   0   0   0   0
 SMP    1   0   0   0   0   0
 SMP    1   0   0   0   0   0
 SMP    1   0   0   0   0   0
 SMP    1   10.44   10.44   11.26   11.26   0
 SMP    1   10.19   10.19   11.03   11.03   0
 SMP    1   10.09   10.09   11.23   11.23   0
 SMP    1   10.24   10.24   11.03   11.03   0
 SMP    1   10.09   10.09   11.3    11.3    0
 SMP    1   10.27   10.27   11.16   11.16   0
 SMP    1   10.02   10.02   11.22   11.22   0
 SMP    1   10.01   10.01   11.16   11.16   0
 SMP    1   10.28   10.28   11.16   11.16   0
 SMP    1   10.22   10.22   11.3    11.3    0
 SMP    1   10.18   10.18   11.25   11.25   0
 SMP    1   10.37   10.37   11.26   11.26   0
 SMP    1   10.54   10.54   11.22   11.22   0
 SMP    1   10.19   10.19   11.26   11.26   0
 SMP    1   10.39   10.39   11.27   11.27   0

出力は次のようになります。各試行は指定された数のサンプルを持つ 1 つの行です。

' 101 0.00 0.00 0.00...10.23 10.23 12.12 12.12 
  103 0.00 0.00 0.00...10.23 10.23 12.12 12.12 
  104 0.00 0.00 0.00...10.23 10.23 12.12 12.12' 

このようなものを追加すると、各試行内ではなく、1500 サンプルが切り捨てられます。

'BEGIN{ SKIP=0; counter=0}
{ 
if ( $1=="MSG" && SKIP==0 )
{
    FS=" "
    printf("\n%s",$5)
    SKIP=1;
}
else if ( $1=="MSG" && SKIP==1 )
{   
    FS=" "
    printf(" %d",$6)
    SKIP=0;
}
else if ($1!="MSG" && counter <=1500) {
{
    FS="\t"
    printf(" %.2f",($4+$5)/2)
    counter++
}
}

}
4

1 に答える 1

1

私は今まであなたのニーズについて確信が持てませんでしたが、これはおそらく出発点です:

$1=="MSG" {
    if ($5 ~ /[0-9]+/){
        counter=0
        }
    printf("\n%s",$5)
    }
($1!="MSG") && ($3!=0) && (counter <= 10) {
    printf("\n %.2f",($3+$4)/2)
    counter++
    }
于 2013-07-08T06:46:38.323 に答える