將多個 CSV 檔案匯入資料夾中並堆疊大家好,
我的 CSV 檔案有問題,它有一個奇怪的分隔符號( “,” ),我不知道如何讓 JMP 自動導入。
我的目標是能夠選擇一個包含多個 CSV 檔案的資料夾,具有相同的結構和列名,匯入所有資料並將它們堆疊起來。
我附加了一個看起來像我的文件的 CSV 檔案。
希望你能幫助我:)
歡呼吧,克里斯蒂安
自動化和腳本資料存取大規模客製化回覆:匯入資料夾中的多個 CSV 檔案並堆疊它們甚至更多,引號有1、2、3個:

也許最好的解決方案是修復文件導出:)
另一個解決方案:使用“Notepad ++”/在檔案中替換:

去掉引號。
回覆:匯入資料夾中的多個 CSV 檔案並堆疊它們您似乎還在每一行末尾添加了“”,並且第一列沒有“,”格式,而是“,”格式。

我不確定這是否適用於您的所有文件,但我會將它們作為文本處理,將它們清理為“適當的” csv,然後從內存中打開到 JMP 表中
Names Default To Here(1);
filedir = "$DOWNLOADS\New folder (2)\";
csvfiles = {};
For Each({filename}, Files In Directory(filedir),
If(Ends With(filename, ".csv"),
Insert Into(csvfiles, filedir || filename);
);
);
dt_res = Empty();
For Each({csvfile}, csvfiles,
txt = Load Text File(csvfile);
lines = Words(txt, "\!N");
lines_fixed = Transform Each({line}, lines,
items = Concat items(Words(line, "\!","), ",");
);
csv_txt = Concat Items(lines_fixed, "\!N");
dt = Open(Char to Blob(csv_txt), "text", Invisible);
dt << Set Name(Word(-1, csvfile, "\/"));
If(Is Empty(dt_res),
dt_res = dt;
,
dt_res << Concatenate(
dt,
"Append to first table";
);
Close(dt, no save);
);
);
dt_res << Bring Window To Front;
回覆:匯入資料夾中的多個 CSV 檔案並堆疊它們啊,對的, 字()使用與文字分列()相同的技巧。
回覆:匯入資料夾中的多個 CSV 檔案並堆疊它們深入挖掘:
主要問題是

在 MFI 設定中。
JMP對第一個和最後一個引號很滿意 -並將整行文字讀取為一列(保留每個第二個引號?!?):

編輯:第一個和最後一個引號?不,它更複雜 - 見下文!
作為快速解決方案,可以將 CSV 引用設定變更為另一個字元:

<
<SET csv="" quote=""></SET>
<P>並使用引號本身作為分隔符號:</P> <P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hogi_2-1756463581618.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="hogi_2-1756463581618.png" style="width: 193px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="hogi_2-1756463581618.png" style="width: 193px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="hogi_2-1756463581618.png" style="width: 193px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="hogi_2-1756463581618.png" style="width: 193px;"><span class="lia-inline-image-display-wrapper" image-alt="hogi_2-1756463581618.png" style="width: 193px;"><img src="https://us.v-cdn.net/6038925/uploads/images/81530i4BF1266286F27E58/hogi_2-1756463581618.png" role="button" title="hogi_2-1756463581618.png" alt="hogi_2-1756463581618.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></P> <P><BR />這允許 JMP 讀取檔案 - 但是:</P> <P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hogi_3-1756463633644.png" style="width: 773px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="hogi_3-1756463633644.png" style="width: 773px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="hogi_3-1756463633644.png" style="width: 773px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="hogi_3-1756463633644.png" style="width: 773px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="hogi_3-1756463633644.png" style="width: 773px;"><span class="lia-inline-image-display-wrapper" image-alt="hogi_3-1756463633644.png" style="width: 773px;"><img src="https://us.v-cdn.net/6038925/uploads/images/81531iE7879526B8F81200/hogi_3-1756463633644.png" width="773" height="87" role="button" title="hogi_3-1756463633644.png" alt="hogi_3-1756463633644.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></P> <P>與<FONT face="courier new,courier">字()</FONT>和<FONT face="courier new,courier">文字分列()</FONT>不同, <FONT face="courier new,courier">小額信貸機構</FONT>將每個(單一)分隔符號視為分隔符<BR />其想法是:缺失資料=缺失數據,沒有跳過的列!</P> <P>感謝 MFI,對於大多數文件來說,這是有意義的:-)</P> <BR /> <P>這裡不行 - 因此,導入後,用戶必須刪除空列。<BR /><BR />請注意:匯入具有空 CSV 報價設定的檔案不起作用。</P> <P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hogi_4-1756463762291.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="hogi_4-1756463762291.png" style="width: 158px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="hogi_4-1756463762291.png" style="width: 158px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="hogi_4-1756463762291.png" style="width: 158px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="hogi_4-1756463762291.png" style="width: 158px;"><span class="lia-inline-image-display-wrapper" image-alt="hogi_4-1756463762291.png" style="width: 158px;"><img src="https://us.v-cdn.net/6038925/uploads/images/81533iF2FFDC8A29503E1D/hogi_4-1756463762291.png" role="button" title="hogi_4-1756463762291.png" alt="hogi_4-1756463762291.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></P> <CODE class=" language-jsl"><
<SET csv="" quote=""></SET> <P>JMP 將自動使用引號作為 CSV 引用並將整個檔案作為單一欄位載入。</P>
回覆:匯入資料夾中的多個 CSV 檔案並堆疊它們更多 MFI 和 CSV 報價的樂趣
使用附件
輸入:JMP:

一旦建立了適合第 1-N 行的假設,就很容易找到第 N+1 行的黑天鵝…
回覆:匯入資料夾中的多個 CSV 檔案並堆疊它們0. 如果引號前面有字符,則不是 CSV 引號。
- 如果單元格的第一個字元是引號,則它是 CSV 引號 -> 掃描以找到結束引號
- 如果有兩個相鄰的引號,則將它們視為單引號

- 如果你在路上發現一個逗號,那就是一個逗號
- 如果你在途中發現換行符,那麼它就是換行符(!!)
實際上,單元格的內容是:

- 還有其他有趣的角色嗎? ……
- 如果你找到結束引號,則引文已完成
- 搜尋分隔符號或換行符。
您找到的任何字元:只需將其添加到引文中。
- 這裡:單引號是單引號
- 2 個引號就是 2 個引號(比較 #2)
- 如果找到分隔符號或換行符,則表示這是儲存格的結尾(比較#4)
- 如果引用前面有一個空格,則該引用不是 CSV 引用。
(#0 的子集)
我花了一段時間才明白
從上一篇文章來看,這就是我將其添加為單獨案例的原因。
csv檔:JMP:

回覆:匯入資料夾中的多個 CSV 檔案並堆疊它們在 JMP 中,
文字到列是處理此類分隔符號的工具:
它不關心它是“或”“,”或“”
它將多個分隔符號視為一個分隔符號(!)
這可能非常有害: 文字到列:正確處理遺失的數據
……但通常這正是我們所需要的,就像這裡一樣。
所以,
a) 透過 MFI 使用「每行一行」選項載入文件
b) 並使用分隔符 = ," 分隔字符

dts = Multiple File Import(
<
<SET folder="">
</SET>
<BR />
回覆:匯入資料夾中的多個 CSV 檔案並堆疊它們根據新發現,原始貼文中的數據表現在看起來更加熟悉:
它類似於一個數據表,在第一步(“V1”)中,導出時在數字和字元列中添加了引號(只是第一列沒有添加引號:

出奇:
V1 可以透過拖曳操作在 JMP 和 Excel 中開啟。這兩個程式都會自動「解壓縮」CSV 格式的報價,並以正確的格式載入表格。那麼,如何從 V1 到有奇怪 sep.csv 的 CSV ?
有效的方法:
步驟 2:將 V1 以製表符分隔的表格形式開啟(而不是帶有 CSV 引號的 CSV 檔案)
步驟3:將表格儲存為csv(在此步驟中[在JMP和Excel中],每行開頭和結尾的附加引號會自動添加,並且單引號會被2個引號替換)
逆過程應該很簡單:
- 只需在 JMP 或 Excel 中開啟sep.csv 格式的 CSV 檔案即可。這兩個程式都會自動刪除引號,並將雙引號轉換回單引號:在 Excel 中如下所示:

正如我們想要的:

因此,讓我們將資料表儲存為 csv - 然後再次載入它:)
在 JMP 中,我們可以停用以下選項:
]
不幸的是,CSV 編碼預設為啟用。一方面,這很合理——保存不含 CSV 引號的文件會顯著改變資料結構!
但實際上,這正是我們想要的。
因此,唯一的方法(?)是將條目從 JMP 或 Excel 複製到文字編輯器並從那裡儲存 v1.txt。
文字編輯器不知道 csv 引號並按原樣儲存文字。
回覆:匯入資料夾中的多個 CSV 檔案並堆疊它們@hogi @jthi非常感謝你的回答和努力!結果比我想像的還要糟糕!
我需要花一些時間仔細研究你的答案,但我還是想立即感謝你:)
歡呼吧,克里斯蒂安