检查数据是否存在于另一个表中嗨,我有 2 个表 A 和 B,每个表都有一个列“email”和“id”。 我想在表 A 中添加一个新列,如果该行在表 B 中显示“相同的电子邮件或相同的 ID”,则为“是”,如果没有则为空。 有人可以帮我写这个脚本吗?
谢谢。
自动化和脚本消费者和市场研究大规模定制质量与工艺工程Re: 检查数据是否存在于另一个表中有用! 非常感谢布雷迪!Re: 检查数据是否存在于另一个表中是的你可以。 我认为最简单的方法是首先限制您放入列表中的内容,方法是仅使用出现在国家 == 美国的行中的值填充列表。查看第一条评论下方的新行,以及接下来两行中使用的 [r] 索引。
Names Default To Here( 1 );
dtA = Data Table( "tableA" );
dtb = Data Table( "tableB" );
//make lists of IDs and emails in table B
r = dtB << get rows where( :country == "US" ); //restrict rows to those where country is US
bIDs = (dtB:ID << get values)[r];
bEmails = (dtB:email << get values)[r];
//use formula to check if anything in the given row of A occurs anywhere in B
dtA << New Column( "bMatch",
character,
formula( If( Contains( bIDs, :ID ) | Contains( bEmails, :email ), "YES", "" ) )
);
dtA:bMatch << Delete Formula;
Re: 检查数据是否存在于另一个表中对不起这是我的错! 错误的列名,我修复了它并且它起作用了! 非常感谢!
下面的一个问题 - 如果在表 b 中有另一列,如国家,其中包含美国或加拿大。我可以在表 a 中做同样的 YES 列但仅当表 b country = US 时吗?Re: 检查数据是否存在于另一个表中根据我的理解,_ 不应引起问题(至少对于 JMP14.3 和 JMP15.2 而言不会)。 您确定您的 dtB 数据表中有 Email_HASHED 列吗?
Re: 检查数据是否存在于另一个表中谢谢你! 这就是我要找的。
这个脚本有一个错误。 不知道是不是因为col名里面有下划线?

Re: 检查数据是否存在于另一个表中嗨,如果我正确地解释了你的问题,无论何时电子邮件或 ID 出现在 B 中,你都希望表 A 中出现 YES,而不管它们出现在表 B 中的位置。 如果是这样,这将做:
Names Default To Here(1);
dtA = datatable("tableA");
dtb = datatable("tableB");
//make lists of IDs and emails in table B
bIDs = dtB:ID << get values;
bEmails = dtB:email << get values;
//use formula to check if anything in the given row of A occurs anywhere in B
dtA << new column("bMatch", character, formula(if(contains(bIDs, :ID) | contains(bEmails, :email), "YES", "")));
dtA:bMatch << Delete Formula;
这是示例输出:

干杯,
布雷迪
Re: 检查数据是否存在于另一个表中我不确定您要做什么。
假设这是表 A:

这是表 B:

因此,考虑两个表的第 1 行中的 user1。 有两个不同的id。 应该保留哪一个? 还是我们应该看到那个人被列出两次? 同样,id=84 会发生什么? 应该有两行还是应该有 user7 电子邮件地址?