將數據導入 Jmp你好,
我正在開發定期數據的 JMP 分析。 我有一個 Excel 宏,每週都會在特定文件夾中生成一個新的 CSV。 我仍然是 JMP 的一個非常基礎的玩家,因此不需要社區的支持來幫助我構建腳本來執行此活動。 我確實嘗試四處搜索但沒有找到任何解決方案。 CSV 文件有 19 列(帶標題)。 如果出現問題,我可以從 CSV 中刪除標題行。 任何人都可以幫助我編寫一個腳本代碼解決方案,幫助我將文件自動導入到 JMP 中的父數據表中,以便我可以運行其他只能評估數據的腳本。
回复:將數據導入 Jmp感謝您的回复txnelson。 這是“在線趨勢數據聚合”日誌文件中的內容。 (這是我運行腳本時打開的文件)
/*:
//:*/
// This script will concatenate cleaned online data files from APPLIKON controllers to a master table.
// Define function to open .xlsx files
DataUpdate = Function({filepath},
Open(
filepath,
Worksheets( "Data" ),
Use for all sheets( 0 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
)
);
//Define path to where .xlsx files are stored (location where this script is stored)
path = get default directory();
//Open Running Table (Online Trend Data Aggregated.jmp) - assuming in same directory as .xlsx files (could change path to wherever)
dt_running = Open(path||"Online Trend Data Aggregated.jmp");
//Get List of Files in Directory
files = Files In Directory(path);
//Remove any files from the list that are not .xlsx or do not contain "APPLIKON" in file name
for(i=N Items(files),i>=1,i--,
If(contains(files[i],".xlsx") == 0 | contains(files[i],"APPLIKON") == 0, Remove From(files,i));
);
//Get max(File Date) in running table to determine which files need to be appended
max_date = max(dt_running:File Date << Get Values);
//Extract Dates from File Names and determine if date is > max_date from running table
dates = {};
update_files = {};
for(i=1, i<=N Items(files),i++,
word_list = Words(files[i],"-"); //breaks out file name into words delimited by hyphens
temp_date = informat(trim(word_list[1]||"/"||word_list[2]||"/"||word_list[3]),"m/d/y"); //first 3 words are month, day, year - concatenat them separated by "/"
if(temp_date > max_date,
Insert Into(dates,temp_date);
Insert Into(update_files,files[i])
)
);
//Import selected files, add File Date column, and concatenate to running table
for(i=1,i<=N Items(update_files),i++,
dt_temp = DataUpdate(path||update_files[i]);
dt_temp << New Column("File Date", format("m/d/y"), Set Values(J(N Row(dt_temp),1,dates[i])));
dt_temp << Go To(:File Date) << Move Selected Column(To first);
dt_running << Concatenate( dt_temp, Append to First Table(1));
Close(dt_temp,nosave);
);
dt_running << Clear Column Selection;
/*:
Scriptable[]回复:將數據導入 Jmp當您只運行該文件而不使用調試器時,您會在日誌中看到哪些語句?回复:將數據導入 Jmp你好,
我正在尋找與原始海報相同的解決方案!
我複制了該腳本並對其進行了修改以滿足我的需要(包括上面的建議,即從 JMP 本身複製並粘貼導入腳本,而不是原始解決方案所提供的腳本。)
...但由於某種原因它不起作用。
該腳本確實打開 JMP 文件“在線趨勢數據聚合”,然後停止且不執行任何操作。 之後會發生什麼?
調試器運行整個過程,我收到的唯一消息是在右上角,它顯示“程序執行已終止”
任何見解都非常感激。 腳本如下:
// This script will concatenate cleaned online data files from APPLIKON controllers to a master table.
// Define function to open .xlsx files
DataUpdate = Function({filepath},
Open(
filepath,
Worksheets( "Data" ),
Use for all sheets( 0 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
)
);
//Define path to where .xlsx files are stored (location where this script is stored on a network drive)
path = get default directory();
//Open Running Table (Online Trend Data Aggregated.jmp) - assuming in same directory as .xlsx files (could change path to wherever)
dt_running = Open(path||"Online Trend Data Aggregated.jmp");
//Get List of Files in Directory
files = Files In Directory(path);
//Remove any files from the list that are not .xlsx or do not contain "APPLIKON" in file name
for(i=N Items(files),i>=1,i--,
If(contains(files[i],".xlsx") == 0 | contains(files[i],"APPLIKON") == 0, Remove From(files,i));
);
//Get max(File Date) in running table to determine which files need to be appended
max_date = max(dt_running:File Date << Get Values);
//Extract Dates from File Names and determine if date is > max_date from running table
dates = {};
update_files = {};
for(i=1, i<=N Items(files),i++,
word_list = Words(files[i],"-"); //breaks out file name into words delimited by hyphens
temp_date = informat(trim(word_list[1]||"/"||word_list[2]||"/"||word_list[3]),"m/d/y"); //first 3 words are month, day, year - concatenat them separated by "/"
if(temp_date > max_date,
Insert Into(dates,temp_date);
Insert Into(update_files,files[i])
)
);
//Import selected files, add File Date column, and concatenate to running table
for(i=1,i<=N Items(update_files),i++,
dt_temp = DataUpdate(path||update_files[i]);
dt_temp << New Column("File Date", format("m/d/y"), Set Values(J(N Row(dt_temp),1,dates[i])));
dt_temp << Go To(:File Date) << Move Selected Column(To first);
dt_running << Concatenate( dt_temp, Append to First Table(1));
Close(dt_temp,nosave);
);
dt_running << Clear Column Selection;
回复:將數據導入 Jmp@cwillden
這很有魅力,我真的很感謝你的支持。 這能夠在幾秒鐘內處理我在獨特的 CSV 文件中的數十萬行,謝謝!!!回复:將數據導入 Jmp以下是您可以如何執行此操作的示例。假設 CSV 文件有 2 列,X1 和 X2。我創建了 2 個示例 csv 文件(“3-29-18 - My Data.csv”和“4-5-18 - My Data.csv”)。我還有一個正在運行的 jmp 表,保存在與 CSV 文件相同的目錄中。
以下腳本將在目錄中查找所有文件,過濾掉任何非 CSV 文件和文件名中不含“我的數據”的文件。然後,它獲取已導入運行表的文件的最新日期。然後,它循環遍歷滿足先前條件的文件列表,並從文件名中提取日期。如果該日期大於運行表中的最大日期,則會將該文件放入文件列表中以追加到運行表中。
之後,它循環遍歷我們確定需要附加的文件,首先打開它們,然後添加文件日期列,然後將文件連接到運行表。
//Define function to open up your CSV files - will need to be modified for your own CSV file
MyCSVImporter = Function({filepath},
Open(
filepath,
columns(
New Column( "X1", Numeric, "Continuous", Format( "Best", 12 ) ),
New Column( "X2", Numeric, "Continuous", Format( "Best", 12 ) )
),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
)
);
//Define path to where csv files are stored
path = "$DOCUMENTS/temp/";
//Open Running Table (RunningTable.jmp) - assuming in same directory as CSV files (could change path to wherever)
dt_running = Open(path||"RunningTable.jmp");
//Get List of Files in Directory
files = Files In Directory(path);
//Remove any files from the list that are not .csv or do not contain "My Data" in file name
for(i=N Items(files),i>=1,i--,
If(contains(files[i],".csv") == 0 | contains(files[i],"My Data") == 0, Remove From(files,i));
);
//Get max(File Date) in running table to determine which files need to be appended
max_date = max(dt_running:File Date << Get Values);
//Extract Dates from File Names and determine if date is > max_date from running table
dates = {};
update_files = {};
for(i=1, i<=N Items(files),i++,
word_list = Words(files[i],"-"); //breaks out file name into words delimited by hyphens
temp_date = informat(trim(word_list[1]||"/"||word_list[2]||"/"||word_list[3]),"m/d/y"); //first 3 words are month, day, year - concatenat them separated by "/"<BR />
if(temp_date > max_date,
Insert Into(dates,temp_date);
Insert Into(update_files,files[i])
)
);
<BR />//Import selected files, add File Date column, and concatenate to running table
for(i=1,i<=N Items(update_files),i++,
dt_temp = MyCSVImporter(path||update_files[i]);
dt_temp << New Column("File Date", format("m/d/y"), Set Values(J(N Row(dt_temp),1,dates[i])));
dt_temp << Go To(:File Date) << Move Selected Column(To first);
dt_running << Concatenate( dt_temp, Append to First Table(1));
Close(dt_temp,nosave);
);
dt_running << Clear Column Selection;
在此示例中,RunningTable 中已包含 3-29-18 數據,因此它只會追加 4-5-18 數據。
回复:將數據導入 Jmp謝謝!
@uday_guntupalli是的,數據將始終採用相同的格式、相同的列數和相同的標題。
我已經將數據導入 JMP 一次。 問題是每週從將生成的新 CSV 文件自動更新此數據。 每週都會生成一個新的 CSV 文件,文件名為“<日期> - 我的數據”。 我希望 JMP 每次都將此數據導入到我的父文件中。 如何編寫命令讓 JMP 自動轉到文件夾目錄並從列表中選擇最新文件並導入該數據並將其修改到運行表。
回复:將數據導入 Jmp只是澄清一點@uday_guntupalli回复:
它將提供這樣的界面。 您可能需要選擇“帶預覽的數據”,以便您了解正在導入的內容並可以進行自定義。 完成導入後,轉到導入的數據表。查看數據表顯示左側的表面板。 右鍵單擊“源”項前面的綠色三角形,它將提供一個“編輯”選項,您可以在其中看到生成的 JMP 腳本。然後,您將能夠將該腳本剪切並粘貼到每週腳本開發的開頭。
回复:將數據導入 Jmp你好@尼爾D ,
如果您可以第一次手動導入腳本,JMP 將為您生成腳本。生成的表將有一個腳本“Source”,它準確顯示如何使用 JSL 導入數據。
如果 JMP 未正確導入 .csv 文件,請執行以下操作。像往常一樣執行“文件”>“打開”(或 Ctrl + O)(如果需要,將“打開數據文件”窗口中的文件類型更改為“文本文件”),導航到 .csv 文件並選擇它。在打開 .csv 之前,您應該會看到一些單選按鈕,為您提供打開文件的不同選項。一是“帶預覽的數據”。選擇該選項後,您將有機會在將數據導入 JMP 之前更改導入設置。

回复:將數據導入 Jmp@尼爾D ,
文件的格式總是相同嗎?即相同的列名和相同類型的數據?
最簡單的方法是讓 JMP 為您提供用於導入文件的腳本 - 這樣您就可以自定義選擇並重複使用該腳本。
文件==>打開==>選擇你想要的文件
它將提供這樣的界面。 您可能需要選擇“帶預覽的數據”,以便您了解正在導入的內容並可以進行自定義。 完成後,單擊綠色三角形,它將提供一個“編輯”選項,您可以在其中看到生成的 JMP 腳本
