JMP是否可以识别值并填写新值我想知道是否有人可以帮助我找出实现此目的的JMP脚本或自动方法。
我有一组邮政编码,希望JMP识别并用相应的县级代码填写新列。 我不确定如何最好地描述这一点,或者不确定是否有这个术语。 我想我想让JMP“人行横道”邮政编码并将其转换为县级代码。
例如,在一个文件中,我将这些邮政编码作为数据:
| 08106 |
| 08107 |
| 08108 |
| 08109 |
| 08110 |
| 08110 |
| 08201 |
| 08202 |
| 08203 |
| 08213 |
| 08214 |
| 08215 |
| 08215 |
| 08217 |
| 08218 |
| 08219 |
我希望JMP浏览每个邮政编码,并在相应县代码的新列中产生。 在一个单独的文件中,我具有相应的zip->县代码。
| 08110 | 34007 |
| 08201 | 34001 |
| 08202 | 34009 |
| 08203 | 34001 |
| 08204 | 34009 |
| 08205 | 34001 |
| 08210 | 34009 |
除了手动执行此操作外,我会在每个邮政编码中搜索县代码是什么,还有自动化的方法吗?
谢谢你的帮助!
回复:是否有可能让JMP识别一个值并填写一个新值使用关联数组制作查找表,例如(未测试的代码,dtZtoC是您到县信息的zip表)。
lookup = associativearray();
for( i = 1, i <= nrows(dtZtoC), i += 1,
lookup[ dtZtoC:zip[i] ] = dtZtoC:county[i];
);
然后使用循环或列公式创建新列(未经测试...这是County的列公式的外观)
lookup[zip]
列公式取决于查找表,以后将不可用,因此完成后从列中删除该公式。 或者,使用类似这样的循环,而没有列公式(未经测试...)
for( i = 1, i <= nrows(dtData), i += 1,
dtData:county[i] = lookup[dtData:zip[i]];
);
编辑:将地理编码Lat-Lon反向转换为Zip使用虚拟联接;虚拟连接在这里也是一个不错的选择。 虚拟联接增加了复杂性以获得灵活性。如果到县映射的邮政编码发生更改,只需更新dtZtoC表,然后dtData表将自动获取更改。 但是现在您需要两个表。
回复:是否有可能让JMP识别一个值并填写一个新值这是虚拟联接的外观(点击并单击,不需要jsl)
金键值在列中必须唯一
默认情况下,County [zip]列是隐藏的,我在图片中未隐藏它。 它最适合已保存的表,并且可能需要在蓝键表之前打开金钥匙表(您会知道该键是否为灰色)。
编辑-您可能希望将代码保留为字符数据,我只是注意到前导零不见了!
回复:是否有可能让JMP识别一个值并填写一个新值你好@SeaAardvark ,
我不明白您是否在另一个表中有两个匹配的列。 如果是这样,我将使用表联接或更新一次,然后编写脚本。
如果您在地图上有数据(没有键匹配表),那么还有解决方案。 过去,我们在讨论基于位置的表更新:
https://community.jmp.com/t5/Discussions/join-tables-based-on-location/mp/14827/highlight/true#M13786
让我们知道是否有帮助,
罗恩