使用 Choose 設定列中的值我確信使用“選擇”函數在列中設定值時遇到一個簡單的問題。下面是一個測試腳本以及顯示所需輸出的表格。
Names Default To Here( 1 );
startTime = 3742070400;
endTime = 3742074000;
dt = New Table( "Test",
Add Rows( 60 ),
New Column( "Timestamp", Format( "m/d/y h:m", 19 ), Set Display Width( 175 ) )
);
For Each Row( :Timestamp[] = Sequence( startTime, endTime, 60 ) );
aggOption = 1; // This will eventually be a pulldown menu with choices
New Column( "Agg Minute",
Numeric,
"Ordinal",
Format( "Best", 12 ),
Set Display Width( 116 )
);
// Script below is the problem. I tried For Each Row and Set Values and a combination
// of both but the column always is blank. See Interpolated Data table for what it
// should look like.
dt:"Agg Minute"n << For Each Row(
Choose( aggOption,
If(
Minute( :Timestamp ) < 15, 15,
Minute( :Timestamp ) < 30, 30,
Minute( :Timestamp ) < 45, 45,
0
),
If(
Minute( :Timestamp ) < 14, 0,
Minute( :Timestamp ) < 29, 15,
Minute( :Timestamp ) < 44, 30,
45
),
If(
0 < Minute( :Timestamp ) <= 15, 15,
15 < Minute( :Timestamp ) <= 30, 30,
30 < Minute( :Timestamp ) <= 45, 45,
0
)
)
);
請注意,當您執行腳本時,Agg Minute 列為空。我嘗試過“設定值”和“每行”以及兩者的組合,但我似乎無法讓它工作。
一如既往,我們非常感謝任何幫助。
謝謝。
自動化和腳本編寫macOS回覆:使用 Choose 設定列中的值如果我設定局部變量,我可以讓它作為列公式工作。但是我無法使用我的組合框結果。
這是該代碼。顯然,關於 JSL 我還需要了解更多。自動產生程式碼非常容易。但通常當我嘗試自訂它時,它就會損壞,而且我還不知道如何修復它。
啊啊。
New Column( "Agg Minute",
Numeric,
"Ordinal",
Format( "Best", 12 ),
Set Display Width( 116 ),
Formula(
Local( {aggOption = 1},
Choose( aggOption,
If(
Minute( :Timestamp ) < 15, 15,
Minute( :Timestamp ) < 30, 30,
Minute( :Timestamp ) < 45, 45,
0
),
If(
Minute( :Timestamp ) < 15, 0,
Minute( :Timestamp ) < 30, 15,
Minute( :Timestamp ) < 45, 30,
45
),
If(
0 < Minute( :Timestamp ) <= 15, 15,
15 < Minute( :Timestamp ) <= 30, 30,
30 < Minute( :Timestamp ) <= 45, 45,
0
)
)
)
)
);回覆:使用 Choose 設定列中的值您錯誤地使用了For Each Row 。您不將其發送到列,它是您提供的(可選)資料表和正文參數的函數,並且在正文中您可以為列設定值。
這是固定版本
Names Default To Here(1);
startTime = 3742070400;
endTime = 3742074000;
dt = New Table("Test",
Add Rows(60),
New Column("Timestamp", Format("m/d/y h:m", 19), Set Display Width(175))
);
For Each Row(:Timestamp[] = Sequence(startTime, endTime, 60));
aggOption = 1;
New Column("Agg Minute", Numeric, "Ordinal", Format("Best", 12), Set Display Width(116));
For Each Row(dt,
:"Agg Minute"n = Choose(aggOption,
If(
Minute(:Timestamp) < 15, 15,
Minute(:Timestamp) < 30, 30,
Minute(:Timestamp) < 45, 45,
0
),
If(
Minute(:Timestamp) < 14, 0,
Minute(:Timestamp) < 29, 15,
Minute(:Timestamp) < 44, 30,
45
),
If(
0 < Minute(:Timestamp) <= 15, 15,
15 < Minute(:Timestamp) <= 30, 30,
30 < Minute(:Timestamp) <= 45, 45,
0
)
)
);回覆:使用 Choose 設定列中的值非常感謝,賈莫。它就像一個魅力。