Word () 函數給出錯誤的輸出大家好,
我在使用 word() 函數時遇到問題。 我從 .csv 開始
例如:
col1,col2
0,556
0,557
0,558
-1,225
-1,226
Datafile = Load Text File (...);
line_content = Words (Datafile, "\!n");
For(nn=2, nn <= N items (line_content), nn++,
Col1_list=Word(1,line_content[nn], ",");
Col2_list=Word(2,line_content[nn], ",");
);
結果列表是:
{“0”、“0”、“0”、“-12”、“-12”}
{"556", "557", "558", "25", "26"}
因此,如果該行以減號開頭,則 word() 函數的工作方式會有所不同... 我試過 Item () 並使用 Num(Word()) 子句,但它沒有改變任何東西。 我也試過 Word(1,Trim(line_content[nn],","))。
我正在使用 JMP 14.0.0
提前致謝
Re: Word () 函數給出錯誤的輸出再次感謝您的想法。 這看起來也不錯。 我不知道發生了什麼變化,但 JMP 現在可以使用昨天我最初發布問題時的腳本正確導入文件(除了我在帖子中犯的錯誤)。 “,”和“。”之間一定有一些更高級別的 Windows/Excel 設置混淆。小數/小數點微分。 我已將我的德國 Windows 配置為使用美國標準。Re: Word () 函數給出錯誤的輸出我不太確定您現在在尋找什麼,但下面的小腳本會讀取您的 .csv 文件並返回您指定的 2 個列表,沒有錯誤。我添加的唯一項目是確保文件中存在的任何回車符不包含在列表的值中。
names default to here(1);
Datafile = Load Text File ("...……...\WFR1_sample1.csv");
line_content = Words (Datafile, "\!n");
// Get rid of all lines upto the Graph data
// The \!r is a Carriage Return character which is at the end of each line
line_content = remove(line_content,1,loc(line_content,"{QgWave Graphs}\!r")+1);
Col1_list = {};
Col2_list = {};
For(nn=1, nn <= N items (line_content), nn++,
insert into(Col1_list,Word(1,line_content[nn], ",\!r"));
insert into(Col2_list,Word(2,line_content[nn], ",\!r"));
);Re: Word () 函數給出錯誤的輸出這是附加的原始 csv。 我讓我的同事回頭看,他也看到了…… 它是可複制的。
Re: Word () 函數給出錯誤的輸出哦,對不起。 我用了這樣的表達:
<SPAN class="token function">For</SPAN><SPAN class="token punctuation">(</SPAN>nn<SPAN class="token operator">=</SPAN><SPAN class="token number">2</SPAN><SPAN class="token punctuation">,</SPAN> nn <SPAN class="token operator"><=</SPAN> N items <SPAN class="token punctuation">(</SPAN>line_content<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> nn<SPAN class="token operator">++</SPAN><SPAN class="token punctuation">,</SPAN>
Col1_list[nn-1]<SPAN class="token operator">=</SPAN><SPAN class="token function">Word</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">,</SPAN>line_content<SPAN class="token punctuation">[</SPAN>nn<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">","</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
Col2_list[nn-1]<SPAN class="token operator">=</SPAN><SPAN class="token function">Word</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token number">2</SPAN><SPAN class="token punctuation">,</SPAN>line_content<SPAN class="token punctuation">[</SPAN>nn<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">","</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
我會改用insert into()函數,這樣方便很多。 謝謝。
如果我使用您提供的示例 .csv,代碼確實有效。
但我剛剛開始質疑自己的心理健康狀況,並使用不同的編輯器打開了 .csv 文件:Windows 記事本、notepad++、Word Pad、Excel。 每隔幾次運行,顯示的數據列都會在不同的地方有逗號,這與使用的程序無關。 我以前從未見過這個。 我可能會下班回家。




Re: Word () 函數給出錯誤的輸出我懷疑你的語法。我不確定您是如何創建 Col1_list 的,而 Col2_list 是否會創建一個串聯列表。下面是我的修改,附件是我使用的csv文件。它在 JMP 14.1 上創建了 2 個列表而沒有錯誤
Datafile = Load Text File (".................\test.csv");
line_content = Words (Datafile, "\!n");
Col1_list = {};
Col2_list = {};
For(nn=2, nn <= N items (line_content), nn++,
insert into(Col1_list,Word(1,line_content[nn], ","));
insert into(Col2_list,Word(2,line_content[nn], ","));
);