<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />嗨,大家好,
我是腳本編寫的新手,我總是試圖在JSL上找到信息教程。對於我的問題,我將非常感謝任何幫助。
基本上,我需要按以下方式排序:城市並總結每個項目的價值:數量,然後顯示它。問題是我需要動態地將所有不同字符串的列表組合在一起:City然後總結所有數值:在“城市”列中具有匹配字符串的那些行的數量。
例如,表格看起來像這樣
tableEx =
| 市 | 數量 |
|---|
| A1 | 100 |
| a2 | 10 |
| A9 | 29 |
| A1 | 99 |
| A4 | 20 |
| A7 | 91 |
| a2 | 60 |
| A100 | 33 |
| A500 | 三十 |
| A100 | 14 |
| A99 | 2000 |
| 等等... | 等等... |
下一部分不需要閱讀來解決我的問題,它只是詳細說明我希望如何在我的腦海中解決問題。我希望我能做到這樣的事情;
List_Of_CityNames = new List();
switch = false;
表格中的Foreach Row r
{
List_Of_CityNames中的Foreach String city
{
if(r.Get(City)== city)
switch = true; //表示此行:城市條目已在列表中,因此我們無需添加它。
}
if(switch == false)//如果此行的:City尚未列入列表,則執行此操作
{
List_Of_CityNames.Add(r.Get(City)); // city添加到列表中
}
switch = false; //切換重置到列表中尚未找到的城市
}
如果這可以工作,我已經從元組中創建了列表並使其成為字符串+ int對,以便我在上面的循環中總結匹配城市的數量。然後我會通過製作一個新表()來打印出來,如果可以的話。
在收集上述信息之後,我需要將其打印出來,是否有人碰巧知道如何根據列表的動態大小創建表,這可能是也可能不是第一個解決方案的一部分。
dtSolution =新表(“解決方案”,
添加行(/ *數值表示不同城市名稱的數量* /),
新列(“/ *列表中的第一個城市* /”,“連續”,設置值(列表(/ *表示總和的變量:相同城市的數量* /)),
新列(“/ *列表中的第二個城市* /”,“連續”,設置值(列表(/ *表示總和的變量:相同城市的數量* /)),
新列(“/ *列表中的第三個城市* /”,“連續”,設置值(列表(/ *表示總和的變量:相同城市的數量* /)),
新列(“/ *列表中的第四個城市* /”,“連續”,設置值(列表(/ *表示總和的變量:相同城市的數量* /)),
新列(“/ *列表中的第五個城市* /”,“連續”,設置值(列表(/ *表示總和的變量:相同城市的數量* /)),
新列(“/ *列表中的第六個城市* /”,“連續”,設置值(列表(/ *表示總和的變量:相同城市的數量* /)),
等等,直到每個城市都被添加到表中//在創建新表之後我可能不得不使用foreach循環將每一行逐個添加到基於pt.1中構建的列表的表中
);
我非常感謝能得到的任何幫助。我也感謝你,如果你最終閱讀了所有這些內容。
謝謝,
Loysius
Loysius,
我應該提到Tabulate出現在JMP 10的Tables菜單中。它從JMP 11開始移動到Analyze菜單。
-Michael
製表窗口中的紅色小三角形允許您將列表保存為數據表。
使用Michael的解決方案,在創建所需的製表後,單擊紅色三角形並選擇“製作數據表”。 這基本上模仿了我在JSL中所做的事情。
謝謝Michael和PMroz!
我在Tables菜單下找到了Tabulate,但感謝您的反饋。我不知道可以將JSL版本的表複製到剪貼板並將它們粘貼到我的腳本中。
遺憾的是,他們不會復制粘貼,以便它們可以直接使用,它們仍然需要在工作之前進行修改。在這種情況下,PMroz的解決方案顯示了使一切正常工作的語法。
此致
Loysius
這是一個JSL程序:
//創建一個示例表
DT = 新表 ( “CityQty” ,添加行 ( 11 ) ,
新欄目 ( “市” ,字符 ,公稱 ,
設定值 ( { “A1” , “a2” , “A9” , “A1” , “A4” , “A7” , “a2” , “A100” , “A500” , “A100” , “A99” } ) ) ,
新欄目 ( “數量” ,數字 ,連續 ,格式 ( “最好” , 12 ) ,
設定值 ( [ 100 , 10 , 29 , 99 , 20 , 91 , 60 , 33 ,三十 , 14 , 2000 ] ) )
) ;
//製作一個不可見的表格
DTAB = DT << 製表 (
顯示控制面板 ( 0 ) ,
添加表格 (
列表 ( 分析列 ( : 數量 ) ) ,
行表 ( 列分組 ( : 市 ) )
) ,無形 ,
) ;
//將製表轉換為表格
dt_new = DTAB << 進入數據表 ;
//刪除列表
DTAB << 關閉窗口 ;
如果您在數據表中有City和Qty列,則可以使用Tabulate(在Analyze菜單下)。
轉到分析>製表。
將城市拖動到“刪除行的區域”。
將Qty拖到標題處,現在顯示為“N”。
單擊“完成”。
我認為這應該給你一個排序的城市列表及其相應的數量總和。
要通過腳本稍後再現,可以使用Tabulate中的紅色三角形菜單轉到“腳本”>“將腳本保存到腳本窗口”(或保存到其他各個位置,包括原始數據表本身)。
希望有所幫助,
邁克爾