如何復制和粘貼來自不同 ID 單元格的數據單元格?你好,
我有一個包含在這篇文章中的數據表的例子。 我需要將 ProTest 單元格中的信息從 B 階段複製到同一列中的 A 階段。 但是,首先我需要按照以下規則匹配 Test_ID:
A 相 <-> B 相
1 11
3 13
5 15
7 17
9 19
由於缺少數據,我有不同數量的參與者。
請問我該怎麼做?
非常感謝!
回复:如何復制和粘貼來自不同 ID 單元格的數據單元格?哎呀!該腳本總是只獲取第一個值,即階段 A。所以用一個額外的過濾器修改語句 & :Phase=="B"
xx = dt << get rows where(:Subject_ID ==uid & :Test_ID == tid & :Phase=="B");
回复:如何復制和粘貼來自不同 ID 單元格的數據單元格?驚人的, @gzmorgan0 !! 工作!
我在哪裡可以了解有關這些命令的更多信息,例如獲取行 where () 和 nrow( )和其他人可以完全控制行和列?如果我想限制 JMP 滾動向量,nrow() 是否接受其中的整數?
我會嘗試適應我的問題...... _/\_
非常感謝!!
回复:如何復制和粘貼來自不同 ID 單元格的數據單元格?哎呀!該腳本總是只獲取第一個值,即階段 A。所以用一個額外的過濾器修改語句 & :Phase=="B"
xx = dt << get rows where(:Subject_ID ==uid & :Test_ID == tid & :Phase=="B");
回复:如何復制和粘貼來自不同 ID 單元格的數據單元格?你好@gzmorgan0
感謝您的解決方案! 只有一個分數無法從階段 B 複製到階段 A。它是 Test_id = 9(相等的 ID)。 我不明白為什麼。
您的腳本已附上。
非常感謝!
回复:如何復制和粘貼來自不同 ID 單元格的數據單元格?您應該查看 JMP 的關聯數組。 將關聯數組視為鍵控列表。 您定義鍵和關聯的值。 鍵可以是字符串、表達式、列表,幾乎任何東西,但數字十進制值、整數都可以。請參閱下面修改後的腳本。 在其他腳本語言中,關聯數組稱為字典。 我經常使用它。
您的其他問題的答案是肯定的,添加更多過濾變量。
祝你好運。
Names Default to Here(1);
dt = Data Table("example2_modified");
decode_aa = Associative Array({1,2,5,8,9}, {20,22,55,18,9});
For(i=1, i<=nrow(dt), i++,
if (:Phase[i] =="A",
uid = :Subject_ID[i];
tid = decode_aa[ :Test_ID[i] ];
xx = dt << get rows where(:Subject_ID ==uid & :Test_ID == tid);
if(nrow(xx)==1,
:ProTest[i] = :ProTest[xx[1]]
);
); //end if Phase
); // end For i回复:如何復制和粘貼來自不同 ID 單元格的數據單元格?傑出的, @gzmorgan0 ! 
我有兩個問題:
1. 如果我想添加更多“過濾器”或“依據”,我是否應該創建更多變量(例如 uid、tid)並將它們插入函數“get rows where ( )”,添加 &“Column name = = '新變量'”?
2. 如果 Test_id“不能”被定義為邏輯序列,例如“sum 10”,請問您是否認為可以創建,例如,在“For 循環語句”之前(或內部)創建一個矩陣,該矩陣將每個 Test_id 從A相到B相? 這樣,用戶可以在兩個階段定義 id 之間的任何關聯。
感謝您的幫助!
最好的!
PS:這篇文章中附有關於以下關聯的建議,我將您的腳本添加到其中:
A相B相
1 20
2 22
5 55
8 18
9 9
回复:如何復制和粘貼來自不同 ID 單元格的數據單元格?即使您的表已排序並且很好,但此腳本不做任何假設,甚至允許沒有相應的 ProTest 的可能性。
Names Default to Here(1);
dt = Data Table("example2");
For(i=1, i<=nrow(dt), i++,
if (:Phase[i] =="A",
uid = :Subject_ID[i];
tid = :Test_ID[i] +10;
xx = dt << get rows where(:Subject_ID ==uid & :Test_ID == tid);
if(nrow(xx)==1,
:ProTest[i] = :ProTest[xx[1]]
);
); //end if Phase
); // end For i