根据条件加入存储在本地文件夹中的两个JMP表?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />大家好,
我对JMP比较新,还在探索..
我的本地文件夹中有两个jmp文件,用于保存医院患者ID及其访问日期信息。一个jmp文件包含门诊访问数据和另一个文件住院访问数据,两者均为2010年至2015年期间。
我想比较并加入两个jmp文件,以便联接为我提供了一个患者的子集,其门诊访问日期小于等于住院访问日期的14天(标准)
我正在使用JMP 12.0并且“表”菜单下的“加入”不允许我在两个表中的列之间构造条件。
我该怎么办?我必须写一个SQL吗?如果是这样,我应该在哪里和哪里编写可以比较两个jmp表并加入它们以获得答案的SQL?
谢谢你的帮助。
问候,
维诺德
Re:根据条件加入存储在本地文件夹中的两个JMP表?嗨伊恩,
我发现我的住院病人表中有两列可能是延迟整个脚本处理,或者只是卡住了无法继续。其中一个是Age,我可以在之前的图像中看到它在每个处理实例中用于显示“评估年龄”并进入旋转旋转。现在Age和另一列都是公式列,当我硬编码值并删除公式时,卡住了。为什么?
现在脚本可以运行并在3小时内打开一个120k唯一的PID表。这是一个64位8GB的RAM i7核心处理器机器,只运行标准的基于Windows的桌面进程,脚本是唯一的重型加载器。
感谢和问候,
Vinod Subramanian
Re:根据条件加入存储在本地文件夹中的两个JMP表?是的,我理解它可能是与资源相关的性能问题并且超出了范围。在这种情况下你可以忽略并关闭这个线程。
感谢您协助找出有效的脚本。如果我可以将它用于整个大型数据集的成功结果,本来会很好。但如果没有其他工作原因,将通过批量运行脚本来决定妥协。
仅仅在一个FYI上,因为您问过......唯一的患者ID约为500,000。
每次我开始在大数据表上运行脚本时,它们都会打开,然后我会看到“评估年龄”(在浏览器窗口的底部面板上),看到嵌入式图像。它与旋转箭头保持一致,就好像处理正在进行中,但“评估年龄”状态永远不会改变。我的表中有一个Age列,但为什么它会停在那里,打败我?昨天我让脚本连续运行了20个小时然后就把它杀掉了..

Re:根据条件加入存储在本地文件夹中的两个JMP表?在线程的顶部,我说“只要你没有资源”。。。
我确实认为数百万行是雄心勃勃的。正如我所提到的,我写的代码在任何意义上都不是“最好的”。虽然它可能会进一步优化,但我仍然不确定您提到的数据大小是否可行。这不是对JMP本身的评论,而是对任何桌面软件的合理性的更多评论。
我可以深入挖掘一下,但是为了帮助我,知道你提到的两个大表中有多少不同的患者ID会很好。从我编写代码的方式来看,我知道这将是确定其成功完成的因素之一。
Re:根据条件加入存储在本地文件夹中的两个JMP表?你好伊恩 ,我在一个较小的数据集上处理脚本,每个表大约有100条记录,输出是预期的。谢谢。我在上面的链中标记了正确的答案。
我现在面临的挑战是在我拥有的更大的数据集(200万条记录)上运行脚本。
另外,您能否帮助我完成前面提到的方案2的脚本。谢谢。如果您希望我将此作为另一个查询进行记录,我可以这样做。
非常感谢您的帮助。
Re:根据条件加入存储在本地文件夹中的两个JMP表?嗨,伊恩,早上好。
我开始对我拥有的文件执行脚本。桌子很大.. 门诊约200万行,住院病人占100万.. 脚本一直在运行..我让它运行了12个小时,并在几分钟后将其杀死。
我将首先尝试在较小的数据集上运行它,看看它是如何响应的。
你能注意到脚本中的任何其他问题吗?我删除了一些代码,更改为调用表并重命名表中存在的列名。
问候,
维诺德
Re:根据条件加入存储在本地文件夹中的两个JMP表?好。听起来你很近。可能还有其他问题,但在您的代码中,第2行和第3行应该是:
DTI = 数据表 ( “ANE_2010-2015” ) ;
DTO = 数据表 ( “综合-SOC-2011-2015” ) ;
因为这是在JSL中引用表的方法。
Re:根据条件加入存储在本地文件夹中的两个JMP表?早安,谢谢你伊恩。我运行了jsl文件,输出工作正常..
我试图修改jsl以应用于我拥有的两个jmp表。我似乎在脚本中做错了,因为在运行脚本时没有任何反应,也没有收到任何错误消息,我附加了编辑过的jsl以供您进行验证和指导。
对于方案2,上面的脚本适用于scenario1 我之前概述了住院病人和门诊病人的jmp表连接成一个集成的jmp表,脚本应该如何改变?为了区分哪些数据行是住院病人,哪些是门诊病人,我在每列数据中引入了一个标有“OP”和“IP”标志的列。住院病人和门诊病人表的患者ID和访问数据在集成的jmp表中的患者ID和访问日期列中连接。
Re:根据条件加入存储在本地文件夹中的两个JMP表?只是为了帮助您更容易地看到它,我编写代码来实现我在上面描述的逻辑。保存附件,在JMP中打开它并执行“编辑>运行脚本”。它(随机)使表格“住院病人”和“门诊病人”(上面附有例子),但随后将栏目添加到“门诊病人”。不要担心代码,只需看看这两个表,看看你是否正在寻找它。
(顺便说一句,我并不认为代码在任何意义上都是“最好的”,尤其是因为正如线程所示,我不确定我是否有清楚的要求)。
Re:根据条件加入存储在本地文件夹中的两个JMP表?谢谢伊恩 。从你所写的内容来看,我认为你做对了...在尝试你发给我的文件后,给我24小时回复你。
在商业环境中,我试图找到在住院病人访问后14天内来门诊就诊的患者病例。在未来,我只需要根据业务需求调整天数(差距)以获得所需的结果集。
你的一句话“我觉得你不期望多次匹配,所以我不确定你是否愿意考虑这种可能性。”,
每个门诊病人或住院病人的就诊都是一个单独的病例和表格中的一个单独的行......患者可能在同一天有两个门诊病人预约,可能有相同或不同的专科。如果这是您多次匹配的意思,那么当您循环患者的每个住院病人访问日期时,这是可能的。
Re:根据条件加入存储在本地文件夹中的两个JMP表?好。我编写了一些我认为类似于你必须提交的数据。保存附件,打开表格并在每个表格中运行保存的脚本。
为了检查我的理解,你想循环“Outpatient”中的行,如下所示:
1 /。第一行是'ID = 1'和'Out Date = 20Jan2014 01:28:05' 。
2 /。在'住院病人'中查找任何行,其中'ID = 1'和'In Date'比20Jan2014 01:28:05早14天。我有一种感觉,你不期望多次匹配,所以我不确定你是否想要允许这种可能性。但是如果匹配,则需要向“Outpatient”添加一个新列,其中包含当前行中的“In Date”值(在本例中为第1行)。
3 /。转到''中的下一行门诊病人 '并重复直到表的结尾。
请问这是对的吗?
Re:根据条件加入存储在本地文件夹中的两个JMP表?嗨,伊恩 ,
我之前没有提到我的非编码背景,所以当你给我发送回复时完全理解你。谢谢。
我按你说的试过.. 这是我得到的输出

我对桌子的观察
- 进出桌内的每位患者只有一次访问时间戳和
- 两个表中的所有患者(进出)
根据我在第一个回复之上添加的方案详细信息...尝试在下面明确说明......
一个。您将从每个患者所提供的情景表和数据结构中注意到表1中的多次访问(门诊病人)和同一患者可能有多次访问,或者可能在表2(住院病人)中甚至没有一次访问。
湾 患者的每个住院患者访问日期的需要小于该患者的任何门诊访问日期 (请注意,患者的每个住院患者就诊日期必须与同一患者的每个门诊就诊日期进行比较)
C。对于符合条件b的门诊患者行,应用其标准住院患者就诊日期<=同一患者门诊就诊日期的14天 (可能早先错误地说过相反的情况。抱歉)
d。只要满足标准c,就行门诊表需要将该患者标记为1(是)
即 需要在中添加新列门诊表在标准符合标志列之后捕获住院病人的访问日期(符合标准)
F。如果没有满足任何住院患者就诊日期标准b和c的门诊排,则在Outpatient表中标记0。
希望我足够清楚。
Re:根据条件加入存储在本地文件夹中的两个JMP表?对不起 - 我们经常使用代码快速回答问题,但要明确,您当然不需要使用它来使用JMP。
但是,要查看我是否在正确的轨道上,请选择上面的代码并将其复制(到剪贴板)。然后执行“新建>新脚本”并将其粘贴到生成的窗口中。然后执行'编辑>运行脚本'。在短暂的延迟之后,这应该制作三个表,称为“In”,“Out”和“In and Out Dates”。您可以通过在前两个上使用“Tables> Join”获得第三个,并通过匹配列进行连接。如果您需要有关如何执行此操作的更多帮助,请参阅: http://www.jmp.com/support/help/Join_Data_Tables.shtml 。在第三个表格中,双击“Criterion Met?”的列标题。这是一个JMP公式列(定义了'Value Order'属性): http://www.jmp.com/support/help/Create_a_Formula_Column.shtml 。
Re:根据条件加入存储在本地文件夹中的两个JMP表?你好伊恩 ,首先要感谢您的回复和帮助。
作为JMP的新手,也是一个非编程员,更多的商人,我需要更多的外行和逐步指导。我想采用交互式方法,因为它可能是最舒适的并且可以实现更快的分辨率。
但在此之前,我想详细说明我的需求......为此目的,我已经在两个表中说明了数据的虚拟快照,并列出了两个场景。后面是第三个相关的基于执行的说明。很抱歉这个冗长的回复,但我认为有必要能够帮助提供适当的指导。再次感谢您的耐心和时间。
1。场景1
门诊JMP表1
仅显示相关栏目)
年患者ID访问日期..... ........ ...... ........
2010 1 03/20/2010
2010 1 05/15/2010
2011 1 01/19/2011
2011 1 08/04/2011
。
。
2010 2 06/18/2010
2010 2 07/12/2010
2010 2 08/1/2010
。
。
对于n个患者来说等等。可以在5年内只有一次门诊就诊的患者。
住院JMP表2
仅相关栏目)
年患者ID访问日期 ..... ........ ...... ........
2010 1 01/08/2010
2010 1 06/10/2010
2010 1 10/19/2010
2011 1 07/15/2011
。
。
2010 3 04/12/2010
2010 3 09/20/2010
2010 3 12/10/2010
。
对于n个患者来说等等。可能有一个患者在5年内只进行一次住院治疗。此表中没有患者2的数据......
我需要的是表格和数据结构每个病人在门诊表我想比较一下该患者的门诊访视日期和住院访问日期并创建一个记录受影响的门诊病人行的子集表 (该已识别行的所有门诊表列) 只要满足以下条件: 门诊就诊日期<= 14天,从住院病人就诊日期开始 (注意住院患者就诊日期应在检查标准前的门诊就诊日期之前) 。此门诊病人行还应包括如此创建的子集表中的住院病人访问日期列。
2。情景2。
我还有一个连接表,通过连接上面的住院病人和门诊病人表和数据。在这 concat表 ,我介绍了一个专栏,以确定哪一行患者数据是住院患者,哪个门诊病人,并保持相同的列名称。在这种情况下,如何修改场景1中的公式以生成子集表?
3。 对于在场景1和2中构造的公式,我应该在JMP中应用/运行公式以获得子集表吗?
Re:根据条件加入存储在本地文件夹中的两个JMP表?鉴于您的起点似乎是两个JMP表,并且只要您不缺资源,您也可以在JMP中加入和应用您的标准。请参阅下面的代码,但请注意'DateDifference()'函数中参数的顺序!如果你想以交互方式工作,只需看看“Criterion Met”中的公式。列并为您的案例构建类似的列。
NamesDefaultToHere ( 1 ) ;
//制作一些模拟的'日期'数据
NR = 100 ;
DT1 = newtable的 ( “在” ,
NewColumn ( “ID” ,数字 ,公称 ,值 (( 1 :: NR ) ` )) ,
NewColumn ( “在日期” ,数字 ,连续 ,
式 ( RandomInteger ( DateDMY ( 1 , 1 , 2014 ) , DateDMY ( 31 , 12 , 2014 ))) ,
格式 ( “ddMonyyyy h:m:s” , 22 , 0 ) ,
输入格式 ( “ddMonyyyy h:m:s” , 0 ) ,
)
) ;
inVals = 柱 ( DT1 , “在日期” ) << 的GetValues ;
dayDelay = Ĵ ( NR , 1 ,回合 ( RandomNormal ( 14 , 7 ) , 0 )) ;
dayDelay [ 禄 ( dayDelay <= 0 )] = 0 ;
outVals = inVals + InDays ( dayDelay ) ;
DT2 = newtable的 ( “内外兼修” ,
NewColumn ( “ID” ,数字 ,公称 ,值 (( 1 :: NR ) ` )) ,
NewColumn ( “出日期” ,数字 ,连续 ,
值 ( outVals ) ,
格式 ( “ddMonyyyy h:m:s” , 22 , 0 ) ,
输入格式 ( “ddMonyyyy h:m:s” , 0 ) ,
)
) ;
//加入dt1和dt2
等待 ( 3 ) ;
DT3 = DT2 << 加入 (
同 ( DT1 ) ,
SelectWith ( : ID , : 在日期 ) ,
选择 ( : 出日期 ) ,
通过匹配列 ( : ID = : ID ) ,
丢弃倍数 ( 0 , 0 ) ,
包括不匹配 ( 0 , 0 ) ,
保留主表顺序 ( 1 ) ,
输出表 ( “进出日期” )
) ;
//添加一列以指示是否满足了贬值
DT3 << 新栏目 ( “标准遇到了什么?” ,
数字 ,
“标称” ,
格式 ( “最好” , 12 ) ,
式 ( 如果 ( DateDifference ( : 在日期 , : 出日期 , “天” ) <= 14 , 1 , 0 ) ) ,
价值标签 ( { 0 = “没有” , 1 = “是” } ) ,
设置选中
) ;