如何复制和粘贴来自不同 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