SelectWhere:需要從JSL中的目前選擇中選擇<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我想從具有多個條件的資料集中選擇行,但我不想使用帶有“and”的單一 select where 語句,而是希望一次循環一個條件,從當前選擇中進行選擇。 這在選擇位置視窗中非常簡單(使用“從目前選擇中選擇”)。 我怎麼能在 JSL 中做到這一點?
例如,我有一個列名清單 cnames = {"Col1", "Col2", "Col3"} 和一個值清單 cspecs = {"a", "b","c} 我想要選擇我的資料表中的行,其中Col1 = a、Col2 = b 和Col3 = c。 我將循環存取 cnames 中的項目,並告訴它每次都從當前選擇中進行選擇。 謝謝!
dt<<
選擇其中(作為列(cnames )==c規格)
回覆:選擇位置:需要從 JSL 中的目前選擇中進行選擇我正在嘗試使用我根據此處的腳本編寫的程式碼。 診斷列是字元列,此代碼不起作用。 表格基本上分為三列,每一列都有 ICD 代碼。 我想選擇與 ICD 代碼相符的情況。 它應該是與任何 ICD 代碼匹配的任何列,因此是嵌套的 for 循環。 未註解的程式碼有效,但選擇字串沒有引號,可能這就是它不起作用的原因。 我怎樣才能解決這個問題?
dt = Open( "\Main.jmp" );
colnames = {"Diagnosis 1", "Diagnosis 2", "Diagnosis 3"};
ICDcodes = { "7731", "7626", "V3001", "V3000"};
tblname = "Subset.jmp";
/*
dt << Select Where(
:Diagnosis 1 == "V3001",
Current Selection( "extend" )
);*/
select_string = "";
For (i = 1, i <= N Items(colnames), i++,
For (j = 1, j <= N Items(ICDcodes), j++,
if (select_string == "",
// then
// select_string = ":" || colnames[i] || " == " || char(ICDcodes[j]);
select_string = ":" || colnames[i] || " == " || char(ICDcodes[j]) ;
// else
,
select_string = select_string || " | " ||
":" || colnames[i] || " == " || char(ICDcodes[j]);
);
);
);
select_string = "dt << select where(" || select_string || ")";
eval(parse(select_string));
print(select_string);
// Create a subset table with GA <32 weeks.
dt << Subset( Output Table( tblname ), Selected Rows( 1 ), selected columns( 0 ) );
dt2 = data table(tblname);
dt2 << save();
//dt << clear select;回覆:選擇位置:需要從 JSL 中的目前選擇中進行選擇
To select a row without deselecting a previously selected row, combine << Select Where with
<< Select Where and the current selection("extend") argument. This is an alternative to
using an OR statement.
dt << Select Where( age == 14 );
dt << Select Where( sex == "F", current selection("extend"));
姆夏普,
我不確定你顯示的語法來自哪裡。JMP 12.1 腳本編寫指南和當前線上文件確實具有正確的文本,如上所示。
謝謝。
溫迪
回覆:選擇位置:需要從 JSL 中的目前選擇中進行選擇我們可以在腳本指南中對此進行更新嗎?
//腳本指南第336頁
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt << 選擇其中( 年齡 < 15 & 性別 == "F" );
//或者
dt << 選擇其中( 年齡 == 14 );
dt << 擴展選擇其中( 性別 == "F" ); //什麼也沒做
等待(10);
dt << Select Where( sex == "F", Current Selection ("extend")); //擴充選擇
回覆:選擇位置:需要從 JSL 中的目前選擇中進行選擇JMP 12 為 SelectWhere() 提供了一個新選項,可讓您指定是否擴充、限製或清除目前選擇。 文法如下:
dt << Select Where( condition, );
以下範例示範了擴展目前選擇。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Select Where( :Age == 14 );
Wait( 1 ); //For demonstration purposes
dt << Select Where(
:sex == "M",
Current Selection( "extend" )
);
希望有幫助!
溫迪
回覆:選擇位置:需要從 JSL 中的目前選擇中進行選擇For 迴圈應該與 where 子句一樣快(如果不是更快的話) - 但「For Each Row」非常慢 - 使用 For (i=1,i<=NRows(dt),,i++ 代替
回覆:選擇位置:需要從 JSL 中的目前選擇中進行選擇一直在尋找幾乎完全相同的問題的解決方案,這確實非常巧妙。我不知道為什麼我之前沒有想到創建一個文字字串來評估它......
SelectWhere:需要從JSL中的目前選擇中選擇謝謝你!字元和數字列有點棘手,但它正在工作,而且與我之前的情況相比,速度有了很大的進步。
SelectWhere:需要從JSL中的目前選擇中選擇一次性執行 SELECT WHERE 可能會更有效。我一直建立動態選擇語句,然後使用 eval(parse()) 來運行它們。下面是 MS 的範例,修改為一次性選擇位置。
dt =打開( “$ENGLISH_SAMPLE_DATA/大類.jmp” ) ;
網域= { “年齡” , “高度” , “重量” } ;
規格= { 15 , 62 , 104 } ;
選擇字串= ”” ;
為了(我= 1 ,我<= N 項(網域) ,我++,
如果(選擇字串== ”” ,
// 然後
選擇字串= “:” ||網域[我] || “==” ||字元(規格[我]) ;
// 別的
,
選擇字串=選擇字串|| “&” ||
“:” ||網域[我] || “==” ||字元(規格[我]) ;
) ;
) ;
選擇字串= “dt << 選擇其中(” ||選擇字串|| “)” ;
評估(解析(選擇字串)) ;
列印(選擇字串) ;
SelectWhere:需要從JSL中的目前選擇中選擇謝謝-這會有所幫助。 我做了一個「每一行」來解決這個問題,但這影響了我的表現。 你的建議會加快速度。
SelectWhere:需要從JSL中的目前選擇中選擇可以使用目前選定行的清單作為 SelectWhere() 的條件的一部分。 此列表可以隨著每次迭代而更新,如下例所示。
dt =打開( “$ENGLISH_SAMPLE_DATA/大類.jmp” ) ;
網域= { “年齡” , “高度” , “重量” } ;
規格= { 15 , 62 , 100 } ;
dt <<選擇所有行;
為了(我= 1 ,我<= N 項(網域) ,我++,
選定的行= dt <<取得選定的行;
dt <<選擇地點(
和(
作為列(網域[我] )[] <規格[我] ,
包含(選定的行,排() ) > 0 )
)
) ;