將列子集或單元格範圍從一個表複製到另一個表我有兩個數據表。 table2 中的某些列與 table1 中的列相同。
我不是要將相同列的數據從 table2 複製到 table1。
這當然意味著 (1) table1 將使用 table2 中的數字或行進行擴展,並且 (2) table1 中將缺少數據。 沒關係。
我的問題是如何將數據從 table2 複製到 table1。
例如 - 兩個表都有“NAME”列。 表 1 有 1000 行,表 2 有 2000 行。
結果將是:table1 有 3000 行,table1 上的“NAME”將是兩個 NAME 列的“串聯”。 table1 中的其他列將有 2000 個缺失/空數據。
順便說一句,實際上,表格要大得多,並且有 10-20 個相同的列(大約 100 個)。 一旦弄清楚基本功能,我就會處理它。 我提到它是為了防止這種尺寸出現問題。
非常感謝
回复:將列子集或單元格範圍從一個表複製到另一個表這個例子對我不起作用。
但是,沒關係,我有了這個想法,它似乎可以在幾個輸入文件上運行測試。
似乎我不必要地使事情複雜化,而直截了當的方法就在我的眼皮底下。
謝謝你的耐心
回复:將列子集或單元格範圍從一個表複製到另一個表
@RonB寫道:
是的,我明白這一點。 但是我正在處理的數據結構還需要復制 Big Class 中在 Fitness 中沒有相同名稱的列。 即,這些列將作為新列“垂直連接”到輸出表。 這些列將以缺失數據(與 Fitness 中的行一樣多)開始,然後是來自 Big Class 的數據。
這與開始時簡單地將兩個表連接在一起有何不同? 這樣做你最終會得到一個包含兩個表中所有行和所有列的表。 對於最初沒有這些列的行,兩個表中沒有匹配名稱的列將為空。
讓我們停止抽像地談論,更具體一點。 這裡有兩個表:
表格1
| A |
乙 |
C |
| 1個 |
1個 |
1個 |
| 2個 |
2個 |
2個 |
| 3個 |
3個 |
3個 |
表2
| A |
乙 |
丁 |
| 4個 |
4個 |
4個 |
| 5個 |
5個 |
5個 |
| 6個 |
6個 |
6個
|
在這兩個表上使用 Tables->Concatenate,您將得到這個表。
表3
| A |
乙 |
C |
丁 |
| 1個 |
1個 |
1個
|
• |
| 2個 |
2個 |
2個 |
• |
| 3個 |
3個 |
3個 |
• |
| 4個 |
4個 |
• |
4個 |
| 5個 |
5個 |
• |
5個 |
| 6個 |
6個 |
• |
6個 |
我在上面解釋您的描述的方式讓我認為這就是您想要的表格。 如果不是,很抱歉我誤解了您的要求。
回复:將列子集或單元格範圍從一個表複製到另一個表是的,我明白這一點。 但是我正在處理的數據結構還需要復制 Big Class 中在 Fitness 中沒有相同名稱的列。 即,這些列將作為新列“垂直連接”到輸出表。 這些列將以缺失數據(與 Fitness 中的行一樣多)開始,然後是來自 Big Class 的數據。
我想我可以通過首先向 Fitness 添加新列,其中包含 Big Class 中所有不同的名稱來做到這一點。 比使用您向我展示的相同方法,僅使用這些列對 Big Class 進行子集化並進行連接。
這是很多工作,但我看不出有其他方法可以處理我擁有的大量表和列。
再次感謝
回复:將列子集或單元格範圍從一個表複製到另一個表
@RonB寫道:
現在我只需要弄清楚如何復制不匹配的列,但我認為我可以管理。
來自哪個表的非匹配列? 上面的示例保留了 Fitness 表中的所有列,並僅連接 Big Class 中具有相同名稱的列。 它通過僅對 Big Class 進行子集化以獲取具有相同名稱的列,然後將其連接到 Fitness(它仍然具有其所有列)來實現這一點。不應該有任何工作來保留不匹配的列。
回复:將列子集或單元格範圍從一個表複製到另一個表工作了。 非常感謝。 現在我只需要弄清楚如何復制不匹配的列,但我認為我可以管理。
回复:將列子集或單元格範圍從一個表複製到另一個表我會試一試並報告(由於不相關的情況可能需要一段時間)。
許多 tx
回复:將列子集或單元格範圍從一個表複製到另一個表
@RonB寫道:
如果我理解你的話,我需要用列 ea 創建 table2.1,而不是將它們重新排序為 ae,然後將 table2.1 連接到 table1?
您已經知道了,但無需重新排序列。 Tables->Concatenate 匹配列名,而不是位置。
子集依賴於列選擇,因此您需要選擇兩個表之間共有的列。 但這很容易,因為您只需從 table1 中獲取所有列名,然後針對 table2 選擇整個列表。 任何不存在的都會被忽略。
下面是一個使用兩個示例數據表的示例。
bc = Open( "$SAMPLE_DATA\Big Class.jmp" );
fit = Open( "$SAMPLE_DATA\Fitness.jmp" );
fit_cols = fit << get column names;
bc << select columns( fit_cols );
sub_bc = bc << Subset( All rows, Selected columns only( 1 ) );
fit << Concatenate( sub_bc );
//if you don't want a new table you can use "Append to first table"
fit << Concatenate( sub_bc, Append to first table );
回复:將列子集或單元格範圍從一個表複製到另一個表好的。 很好的鼓勵。
表 1 有列 abcde,表 2 有列 xyezau v。 我只想將表 2 中的列 ea 連接到表 1。 你會怎麼做?
如果我理解你的話,我需要用列 ea 創建 table2.1,而不是將它們重新排序為 ae,然後將 table2.1 連接到 table1?
回复:將列子集或單元格範圍從一個表複製到另一個表不要放棄內置函數,比如 Tables->Concatenate 這麼快。
如果您只想在兩個表之間具有相同名稱的列,則可以使用 Tables->Subset 創建兩個表,其中僅包含每個表中的那些列,然後連接這兩個表。
回复:將列子集或單元格範圍從一個表複製到另一個表再次感謝。 不幸的是,由於我的數據集的怪異性質,連接不會起作用。
我只需要連接某些列,忽略測試。
我總是可以遍歷源表中的所有行並在目標表中插入行,而不是一一設置列值。 但我擔心它會佔用 CPU - 我的腳本將處理 100 多個文件,其中包含數十列和數千行。 此外,這不是一個優雅的解決方案,儘管可能是不可避免的。
我會簡化我的問題。
我可以做那樣的事嗎?
Column(dt, i)[from,to] = 值列表或矩陣
謝謝你的耐心,
回复:將列子集或單元格範圍從一個表複製到另一個表串聯不會忽略不匹配的列。下面是一個使用 Big Class 和 Big Class Families 的樣本數據表。請注意,Big Class 數據表最終將包含 Big Class Families 中不在原始 Big Class 數據表中的所有列。
Names Default To Here( 1 );
dt1 = Open( "$SAMPLE_DATA/big class.jmp" );
dt2 = Open( "$SAMPLE_DATA/big class families.jmp" );
dt1 << concatenate( dt2, Append to First Table( 1 ) );
回复:將列子集或單元格範圍從一個表複製到另一個表謝謝。
連接函數不會執行,因為我只需要對兩個表中相同的列執行此操作,而跳過所有其他列。
我嘗試將源列數據存儲在矩陣/列表中,而不是使用訂閱 [I,j] 在目標列(第二個表)上設置值,但我想我遺漏了一些東西。
回复:將列子集或單元格範圍從一個表複製到另一個表您可以讓 JMP 為您生成代碼。
跑過
表==>連接
交互式地,然後在新數據表中,進入數據表左側的表面板並右鍵單擊“源”條目,然後選擇“編輯”。在那裡您將看到將文件連接在一起所需的 JSL。
JSL基本上是
dt1=data table(<YOUR first="" table="">);
dt2=data table(<YOUR second="" table="">);
dt1 = dt1 << concatenate( dt2, Append to First Table(1));</YOUR></YOUR>
回复:將列子集或單元格範圍從一個表複製到另一個表謝謝。 我確實考慮過。 但是,我需要使用腳本來完成,因為我有很多這樣的文件,並且列的順序從一個變為一個。
我想找出一些可以做到這一點的代碼。
謝謝
回复:將列子集或單元格範圍從一個表複製到另一個表JMP 將使用
表==>連接
連接時它將按列名排列列。對於未出現在一個或另一個數據表中的列,缺失值將自動添加到行中。
Concatenation Platform 保留匹配列的名稱,只是為不在基礎數據表中的列添加新的列名。
有關文檔,請參閱:
幫助==>書籍==>使用JMP