
はい。選択された領域だけを見るときです。私は欲しいと思います:
Nback#= 1、期間= 14303912、累積期間= 0
Nback#= 2 、期間= 14305914、累積期間= 2002
Nback#= 3 、期間= 14307916、累積期間= 4004
Nback#= 4 、期間= 14309965、累積期間= 6053
Nback#= 5 、期間= 14312015、累積期間= 8103
Nback#= 6 、期間= 14314051、累積期間= 10139
この最後のコラムを時間の尺度として作成する必要があります。任意のガイダンスは大歓迎です。
それで、この小さな変更をしても私の新しい変数に対して同じ種類の出力が得られます。
各期間の最初の行の終了時刻からカウントを開始することをお勧めします。

期間を合計することもできますが、行間の時間を見逃す可能性があります。私の意見では、開始時間と終了時間(Nback StartとNback Stopとsummary_image_end)を使用することはかなり簡潔です。 式は以下の通りでなければなりません。 青い列(summary_image_endが気になる場合)または赤い列(Lag1が気になる場合)のどちらかを使用します。

それで私が持っているデータを見ると、私は 'Nback Duration'コラムがあることに気づきました。この列とlag1列を使用して目的の結果を得るためのより簡単な方法があるかどうか私は思っていました。
これは、列式だけでこれを行う方法です。 時間リセットを示すためにどの列を使用しているのかわからないので、含めました。
- 新しいグループごとに値が変わる列からこれを行う方法。
- 時間内のリセットを示す列に基づく方法。
Names default to here ( 1 );
//Table with data similar to yours
dt = New Table( "Data",
Add Rows( 40 ),
New Column( "Space", Numeric, "Continuous",
Format( "Best", 12 ),
Formula( Round( Random Uniform( 1, 5 ), 0 ) )
),
New Column( "Duration", Numeric, "Continuous",
Format( "Best", 12 ),
Formula( Round( Random Uniform( 1998, 2002 ), 0 ) )
),
New Column( "Start", Numeric, "Continuous",
Format( "Best", 12 ),
Formula( If( Row() == 1, :Space, :Space + Lag( :Start, 1 ) + Lag( :Duration, 1 ) ) )
),
New Column( "End", Numeric, "Continuous",
Format( "Best", 12 ),
Formula( :Start + :Duration )
),
New Column( "Period Indication", Character, "Nominal",
Formula( If( Row() < 15, "One", "Two" ) )
),
New Column( "Indication of Time Reset Pulse", Numeric, "Nominal",
Formula( If( Row() == 10, 1, . ) )
)
);
//New Column - subtract the current end time from the first end time in
//the group. Use this if the column :summary_image_end" tells you when
//to start a new group
dt << New Column( "Time In Group", Numeric, "Continuous",
Format( "Best", 12 ),
Formula( :End - Col Min( :Start, :Period Indication ) )
);
//Make a New Column indicating the period for a pulse signal, use this if
//the column Lag1 tells you when to start a new group
dt << New Column( "Period Indication from Pulse", Numeric, "Nominal",
Format( "Best", 12 ),
Formula(
If(
Row() == 1,
1,
Lag( :Period Indication from Pulse, 1 ) +
If(
Is Missing( :Indication of Time Reset Pulse ),
0,
1
)
)
)
);
//Once the group column is made then calculate the duration
dt << New Column( "Time In Group - Pulse", Numeric, "Continuous",
Format( "Best", 12 ),
Formula( :End - Col Min( :Start, :Period Indication from Pulse ) )
);このスクリプトはあなたが必要とするものかもしれません。添付ファイルとして設定されたデータ。
dt = Current Data Table();
//dt << New Column( "Delta", numeric );
dt << New Column( "Cumulative", numeric );
dt << Sort( By( :Category, :Time ), Order( Ascending, Ascending ), Replace table );
For( i = 1, i <= N Rows( dt ), i++,
If( :Time[i] == Min( :Time[dt << get rows where( :Category == :Category[i] )] ),
//dt:Delta[i] = 0;
dt:Cumulative[i] = 0;
,
//dt:Delta[i] = dt:Time[i] - dt:Time[i - 1];
dt:Cumulative[i] = dt:Cumulative[i-1]+ (dt:Time[i] - dt:Time[i - 1]);
)
);