我有关于使用脚本将 xls 文件导入 jmp 的问题
我想使用“7”行作为标题导入此文件,并将新列“Lot id”填充数据作为 B3 单元格数据 (B6C141-02B5) 添加到新列中
我怎样才能做到这一点
谢谢你

正如 txNelson 和 Ian 所提到的,您的数据表没有真正适合统计分析的格式,但不幸的是,这种情况在行业中很常见,尤其是在主要使用电子表格工具时。 统计数据应尽可能以矩形形式显示在列和行中。 否则,您需要为计算指定每个单元格,而不是使用向量和矩阵,这样效率会高得多。 这就是 txNelson 两次导入工作表并提取信息的原因,就像 Ian 以类似的方式所做的那样。
前段时间,我有一个关于从 Excel 导入数据的技巧的发现演示文稿,我相信它仍然有效:使用 JMP 中的 Excel 数据解决常见问题(2016 年欧洲 JMP 探索峰会)
还写了一些关于从 Excel 导入的博客。 与您不同的情况,但可能对其他情况有用:
Martin 关于 Excel 和 JMP 的博客
我认为您需要了解一点 JSL,这应该可以帮助您入门。 “最佳”方法将取决于您可以(和不能)假设超出您给出的示例的数据结构。
此代码一点也不健壮,并假定您的文件位于“下载”文件夹中。 如果您查看“帮助 > 书籍 > 脚本指南”,您可能会弄清楚它在做什么(取决于您有多少编码经验)。
NamesDefaultToHere(1);
dt = Open("$DOWNLOADS/test_import.xlsx");
lid = Column(dt, 2)[2];
colNames = {};
InsertInto(colNames, Column(dt, 1)[11]);
InsertInto(colNames, Column(dt, 2)[11]);
InsertInto(colNames, Column(dt, 3)[7]);
InsertInto(colNames, Column(dt, 4)[7]);
InsertInto(colNames, Column(dt, 5)[7]);
InsertInto(colNames, Column(dt, 6)[7]);
InsertInto(colNames, Column(dt, 1)[2]);
dt << deleteRows(1::11);
for(c=1, c<=NItems(colNames), c++, Column(dt, c) << setName(colNames[c]));
Column(dt, colNames[NItems(colNames)]) << setValues(Repeat(lid, NRows(dt)));
dt << setName("Data for lot "||lid);这是输入数据的脚本
我使用 JMP Excel 向导以交互方式打开文件,然后将 JMP 创建的源脚本复制到脚本中。该脚本两次读入文件。首先读取数据,然后第二次读取 Lot ID。然后我只是添加了代码,让您选择要导入的 Excel 文件,以及创建新批次 ID 列所需的 JSL。
names default to here(1);
path = Pick File();
dt = Open(
path,
Worksheets( "Sheet1" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 7 ),
Headers Start on Row( 6 ),
Data Starts on Row( 13 ),
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( "-" )
)
);
dtLotID = Open(
path,
Worksheets( "Sheet1" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 0 ),
Number of Rows in Headers( 7 ),
Headers Start on Row( 6 ),
Data Starts on Row( 3 ),
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( "-" )
)
);
lotID = dtLotID:Column 2[1];
close(dtLotID, nosave );
dt << New Column("Lot ID", Character, set each value(lotID));