有關子集創建的更多信息<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />你好,我指的是帖子https://communities.sas.com/message/166376#166376從今年5月開始。
該示例解釋瞭如何通過 1) 首先添加 af 數據過濾器和 2) 然後子集化來創建新數據表:
dt = 打開(大類);
dt << 數據過濾器(添加過濾器(列(:年齡),其中(:年齡== {12,13}),模式(選擇(1)));
sub1 = dt<
結果創建了一個名為“regions”的數據表。 不出所料。
我已經使用我自己的數據集創建了一個類似的示例(BigClass 示例有效!!),這對我來說效果不佳。 我懷疑我對某些事情有誤解。 這是我的程序流程。
BigClass 示例和我的示例之間的區別在於,當我運行整個腳本時,數據過濾器沒有被選中。 (我省略了從 Excel 文件加載文件以便能夠向您發送原始代碼,其中包含某些名稱)。 解釋一下:有一個字符列,我想從中僅選擇列中文本以“d”或“I”開頭的那些行。 我發現有必要創建一個新列來執行數據篩選。 當我總共運行代碼時,不會選擇行,也不會創建子集數據表。 如果我首先運行代碼直到創建新列 Onelettet,然後運行數據篩選器,然後創建篩選器並選擇行。 最後創建子集數據表。 但是這些事情應該以腳本運行的方式發生嗎? 要么?
這是使用腳本的基礎,因此我需要深入了解這些細微之處。
問候
波爾
回复:更多關於子集創建使用MS的示例代碼,這裡有一個非常健壯的直接解決方案,因為它不需要數據表中的行切換到選中狀態:
dt =新表( “測試” ,
添加行( 5個) ,
新建專欄( “指導員” ,特點,
設置值( { “鼓” , “喇叭” , “七弦琴” , “單簧管” , “迪吉里杜管” } )
)
) ;
選擇= dt <<獲取行在哪裡(以。。開始( :指導, “d” ) |以。。開始( :指導, “我” ) ) ;
dt <<子集(輸出表名( “自我指導” ) ,行數(選擇) ,選定的列( 0 ) ) ;
回复:更多關於子集創建如果您已提供參考,則關閉數據過濾器很簡單。
去向= dt <<數據過濾器( ... ) ;
去向<<關;
回复:更多關於子集創建嗨女士,
添加等待();在公式評估解決了在執行子集命令之前過濾器未設置的問題之後。 謝謝你。
關閉過濾窗口的命令是什麼? 我不希望它在子集之後留在屏幕上。 我只想要數據集。 其實我根本不需要看。
是的,我認為選擇可以在一份聲明中完成。 只是不知道該怎麼做。
謝謝
波爾
回复:更多關於子集創建如果沒有用於測試代碼的表格,很難說出為什麼它在特定情況下不起作用。 如果代碼依賴於在同一腳本中創建的列公式,我的經驗是公式計算可能會滯後於腳本執行,從而導致意外結果。 為避免這種情況,可以嘗試插入等待()要么<< 評估公式在關鍵步驟。
但是在這種特殊情況下,如果我理解正確,則不需要新列(或數據過濾器)。 也許下面的例子會有所幫助。
//示例表
dt =新表( “測試” ,
添加行( 5個) ,
新建專欄( “指導員” ,特點,
設置值( { “鼓” , “喇叭” , “七弦琴” , “單簧管” , “迪吉里杜管” } )
)
) ;
// 使用數據過濾器選擇以 d 或 l 開頭的 instr
選擇= dt <<獲取行在哪裡(以。。開始( :指導, “d” ) |以。。開始( :指導, “我” ) ) ;
dt <<數據過濾器(
添加過濾器(列( :指導) ,在哪裡( :指導= :指導[選擇] ) ,模式(選擇( 1個) ) )
) ;
dt <<子集(輸出表名( “自我指導” ) ,選定的行( 1個) ,選定的列( 0 ) ) ;
// 或者沒有數據過濾器的更直接的方法
dt <<選擇哪裡(以。。開始( :指導, “d” ) |以。。開始( :指導, “我” ) ) ;
dt <<子集(輸出表名( “自我指導” ) ,選定的行( 1個) ,選定的列( 0 ) ) ;