這篇文章與 Linux 無關;它是關於使用JMP 下載貨幣換算數據。
Linux 計算器上的貨幣按鈕最近引起了我的注意。
Calculator showing the currency conversion buttons顯示貨幣換算按鈕的計算器
他們如何獲得最新的轉換係數? 谷歌帶我這裡, 這讓我這裡, 這把我帶到了這個歐洲中央銀行頁面包含費率以及指向 PDF、CSV 和 XML 下載的鏈接。 單擊 XML 鏈接,您的瀏覽器可能會打開如下內容:
screenshot of FireFox showing an XML file of exchange rates顯示匯率 XML 文件的 FireFox 屏幕截圖
快速瀏覽一下就會發現這些匯率都是基於歐元的,因為歐元沒有出現並且表格中沒有 1.0000 因素。 這也是參考頁面所說的:
based on the euro基於歐元
讓我們將 XML 加載到數據表中。 JMP 15 的 XML 嚮導可以幫助構建 JSL 來執行此操作。 首先,將 XML 從瀏覽器保存到您的機器,然後使用文件 -> 打開,選擇 XML 擴展名,選擇您的文件,然後在嚮導中打開它。
Choose the XML extension to see the downloaded file選擇 XML 擴展名以查看下載的文件
XML 嚮導打開,是時候決定感興趣的列和行了。 打開統計列以查看重複數據在哪些鍵下並關閉名稱列以使顯示更適合屏幕:
opening the XML file with the wizard使用嚮導打開 XML 文件
你也可以使用 Tall Guess 來得到同樣的東西。 Tall Guess 注意到 32 個重複條目並選擇該鍵來生成行,然後選擇所有(兩個)子鍵來生成列。 它使用 Sampler 數據來確定子鍵是否應該生成數字或字符數據。
現在通過關閉 Stat Cols 並重新打開 Name Cols 來重命名列。 還要修飾其他一些東西,將貨幣的建模類型設置為名義型。 時間,姓名,主題在圖片後描述...
Changing column names, adding some meta data更改列名,添加一些元數據
元數據還有其他三列:時間、姓名、主題。 時間似乎最有用;讓我們保持每一行的時間。 名稱和主題只能作為表變量保存;他們會在確定後出現:
The source script and the two table variables are part of the imported table源腳本和兩個表變量是導入表的一部分
單擊表變量以提醒表的來源。
要在下週使用下週的當前數據重現此導入,請獲取源腳本並在 URL 中進行編輯:
Open(
//"E:\eurofxref-daily.xml",
"https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml",
XML Settings( Stack( 0 ),
Row( "/gesmes:Envelope/Cube/Cube/Cube" ),
Col("/gesmes:Envelope/gesmes:subject",
Column Name( "gesmes:subject" ), Fill( "Use Forever" ),
Type( "Table Variable" ), Format( {"Best"} ), Modeling Type( "Continuous" ) ),
Col("/gesmes:Envelope/gesmes:Sender/gesmes:name",
Column Name( "gesmes:name" ), Fill( "Use Forever" ),
Type( "Table Variable" ), Format( {"Best"} ), Modeling Type( "Continuous" ) ),
Col("/gesmes:Envelope/Cube/Cube/@time",
Column Name( "time" ), Fill( "Use Forever" ),
Type( "Numeric" ), Format( {"yyyy-mm-dd", 10} ), Modeling Type( "Continuous" ) ),
Col("/gesmes:Envelope/Cube/Cube/Cube/@currency",
Column Name( "currency" ), Fill( "Use Once" ),
Type( "Character" ), Format( {"Best"} ), Modeling Type( "Nominal" ) ),
Col("/gesmes:Envelope/Cube/Cube/Cube/@rate",
Column Name( "rate" ), Fill( "Use Once" ),
Type( "Numeric" ), Format( {"Best"} ), Modeling Type( "Continuous" ) )
),
XML Wizard( 0 )
);