cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • See how to import and prepare Excel data. Jan. 30, 2-3 pm US ET. Register.

Discussions

Solve problems, and share tips and tricks with other JMP users.
%3CLINGO-SUB%20id%3D%22lingo-sub-777716%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ETabella%20dei%20rischi%20del%20grafico%20KM%20su%20JMP%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-777716%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3ESecondo%20%3CA%20title%3D%22Visualizzazione%20delle%20tabelle%20a%20rischio%20sotto%20Kaplan%20Meier%22%20href%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2FDiscussions%2FDisplaying-at-risk-tables-under-kaplan-meier%2Fm-p%2F55338%2Fhighlight%2Ftrue%23M31302%22%20target%3D%22_blank%22%3Ehttps%3A%2F%2Fcommunity.jmp.com%2Ft5%2FDiscussions%2FDisplaying-at-risk-tables-under-kaplan-meier%2Fmp%2F55338%2Fhighlight%2Ftrue%23M31302%3C%2FA%3E%20%2C%20potresti%20fornire%20il%20metodo%20per%20generare%20un%20rischio%20tabella%20sotto%20il%20grafico%20KM%3F%20Ho%20provato%20a%20seguire%20lo%20script%20dal%20commento%20ma%20era%20chiuso%20per%20essere%20risolto.%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CPRE%3E%3CCODE%20class%3D%22%20language-jsl%22%3Edt%20%3D%20Current%20Data%20Table%20()%3B%0AminT%20%3D%200%3B%0AmaxT%20%3D%2025%3B%0AstepT%20%3D%201%3B%0A%0ASummarize(%20lv%20%3D%20by(%20%3Agroup)%20)%3B%0Aobj%20%3D%20Survival(%0A%09Y(%20%3Atime%20)%2C%0A%09Censor(%20%3A%22reject%22n%20)%2C%0A%09Grouping(%20%3Agroup%20)%2C%0A%09Failure%20Plot(%200%20)%2C%0A%09SendToReport(%0A%09%09Dispatch(%0A%09%09%09%7B%22Survival%20Plot%22%7D%2C%0A%09%09%09%221%22%2C%0A%09%09%09ScaleBox%2C%0A%09%09%09%7BMin(%200%20)%2C%20Max(%2025%20)%2C%20Inc(%201%20)%2C%20Minor%20Ticks(%201%20)%7D%0A%09%09)%2C%0A%09%09Dispatch(%0A%09%09%09%7B%22Survival%20Plot%22%7D%2C%0A%09%09%09%22time%22%2C%0A%09%09%09TextEditBox%2C%0A%09%09%09%7BSet%20Text(%20%22Times(years)%22%20)%7D%0A%09%09)%0A%09)%0A)%20%26lt%3B%26lt%3B%20report%3B%0Aobj%5BList%20Box(%202%20)%5D%20%26lt%3B%26lt%3B%20append(%20Table%20Box(%20String%20Col%20Box(%20%22No%20at%20Risk%20%7C%20Year%22%2C%20lv%20)%20)%20)%3B%0ATab1%20%3D%20(obj%5Blv%5B1%5D%5D%5BTable%20Box(%201%20)%5D%20%26lt%3B%26lt%3B%20get)%3B%0ATab2%20%3D%20(obj%5Blv%5B2%5D%5D%5BTable%20Box(%201%20)%5D%20%26lt%3B%26lt%3B%20get)%3B%0AFor(%20T%20%3D%20minT%2C%20T%20%26lt%3B%3D%20maxT%2C%20T%20%2B%3D%20stepT%2C%0A%09lp%20%3D%20Max(%20Loc(%20Matrix(%20Tab1%20%5Byears%5D%20)%20%26lt%3B%3D%20T%20)%20)%3B%0A%09AR1%20%3D%20Tab1%5B%22At%20Risk%22%5D%5Blp%5D%3B%0A%09lp%20%3D%20Max(%20Loc(%20Matrix(%20Tab2%20%5Byears%5D)%20%26lt%3B%3D%20T%20)%20)%3B%0A%09AR2%20%3D%20Tab2%5B%22At%20Risk%22%5D%5Blp%5D%3B%0A%09obj%5BList%20Box(%202%20)%5D%5BTable%20Box(%201%20)%5D%20%26lt%3B%26lt%3B%20append(%20Number%20Col%20Box(%20Char(%20T%20)%2C%20%7BAR1%2C%20AR2%7D%20)%20)%3B%0A)%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3El'uscita%20%C3%A8%20stata%20mostrata%20come%20nell'immagine%20allegata.%20Potresti%20per%20favore%20correggere%20lo%20script%3F%3C%2FP%3E%3CP%3E%20%3C%2FP%3E%3CP%3EGrazie%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-777716%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3EEsplorazione%20e%20visualizzazione%20dei%20dati%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-777727%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERi%3A%20Tabella%20dei%20rischi%20del%20grafico%20KM%20su%20JMP%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-777727%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHo%20tentato%20di%20parametrizzare%20ulteriormente%20il%20codice%2C%20fa%20questo%20quello%20che%20stai%20cercando%20se%20cambi%20minT%2C%20maxT%2C%20stepT%2C%20ycol%2C%20raggruppamento%20e%20usi%20la%20tua%20tabella%3C%2FP%3E%0A%3CPRE%3E%3CCODE%20class%3D%22%20language-jsl%22%3ENames%20Default%20To%20Here(1)%3B%0A%0Adt%20%3D%20Open(%22%24SAMPLE_DATA%2FRats.jmp%22)%3B%0A%0AminT%20%3D%20100%3B%0AmaxT%20%3D%20350%3B%0AstepT%20%3D%2050%3B%0Aycol%20%3D%20%22days%22%3B%0Agrouping%20%3D%20%22Group%22%3B%0A%0ASummarize(dt%2C%20groups%20%3D%20by(Eval(grouping)))%3B%0A%0Aobj%20%3D%20dt%20%26lt%3B%26lt%3B%20Survival(%0A%09Y(Eval(ycol))%2C%0A%09Censor(%3ACensor)%2C%0A%09Grouping(Eval(grouping))%2C%0A%09Show%20Points(1)%2C%0A%09SendToReport(%0A%09%09Dispatch(%7B%22Survival%20Plot%22%7D%2C%20%221%22%2C%20ScaleBox%2C%0A%09%09%09%7BMin(minT)%2C%20Max(maxT)%2C%20Inc(stepT)%2C%20Minor%20Ticks(1)%7D%0A%09%09)%2C%0A%0A%09)%0A)%3B%0A%0Arep%20%3D%20Report(obj)%3B%0A%0Arep%5BList%20Box(2)%5D%20%26lt%3B%26lt%3B%20append(tb%20%3D%20Table%20Box(String%20Col%20Box(%22No%20at%20Risk%20(%22%7C%7Cycol%7C%7C%22)%22%2C%20groups)))%3B%0Arep%5BList%20Box(2)%5D%20%26lt%3B%26lt%3B%20Append(Spacer%20Box(Size(0%2C20)))%3B%0A%0Atabs%20%3D%20%7B%7D%3B%0AFor%20Each(%7Bgroup%7D%2C%20groups%2C%0A%09Insert%20Into(tabs%2C%20Eval%20List(%7Brep%5BOutlineBox(group)%2C%20Table%20Box(1)%5D%20%26lt%3B%26lt%3B%20get%7D))%3B%0A)%3B%0A%0A%0AFor(T%20%3D%20minT%2C%20T%20%26lt%3B%3D%20maxT%2C%20T%20%2B%3D%20stepT%2C%0A%09%0A%09ARs%20%3D%20%7B%7D%3B%0A%09For%20Each(%7Btab%7D%2C%20tabs%2C%0A%09%09lp%20%3D%20Max(Loc(Matrix(tab%5Bycol%5D)%20%26lt%3B%3D%20T))%3B%0A%09%09Insert%20Into(ARS%2C%20tab%5B%22At%20Risk%22%5D%5Blp%5D)%0A%09)%3B%0A%09%09%0A%09tb%20%26lt%3B%26lt%3B%20append(Number%20Col%20Box(Char(T)%2C%20ARs))%3B%0A)%3B%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3EModifica%3A%20piccole%20correzioni%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-777758%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERi%3A%20Tabella%20dei%20rischi%20del%20grafico%20KM%20su%20JMP%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-777758%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3ECiao%20Jarmo%2C%20grazie%20per%20il%20tuo%20aiuto.%20Ha%20funzionato!%3C%2FP%3E%3CP%3E%20%3C%2FP%3E%3CP%3EMeglio%2C%20Theerachai%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-777774%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERi%3A%20Tabella%20dei%20rischi%20del%20grafico%20KM%20su%20JMP%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-777774%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EEcco%20anche%20uno%20script%20che%20pu%C3%B2%20essere%20utilizzato%20fondamentalmente%20sul%20rapporto%20Survivor.%20Potrebbe%20funzionare%20nella%20maggior%20parte%20dei%20casi%2C%20ma%20non%20sono%20sicuro%20che%20funzioner%C3%A0%20poich%C3%A9%20non%20ho%20molta%20familiarit%C3%A0%20con%20questa%20piattaforma%20o%20analisi%20JMP.%20Ho%20anche%20modificato%20i%20calcoli%20in%20modo%20che%20potrebbero%20non%20essere%20esattamente%20corretti%3C%2FP%3E%0A%3CP%3E%20%3C%2FP%3E%0A%3CP%3EPer%20prima%20cosa%20devi%20avere%20aperto%20il%20rapporto%20sui%20sopravvissuti%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22jthi_1-1722445639973.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_1-1722445639973.png%22%20style%3D%22width%3A%20220px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_1-1722445639973.png%22%20style%3D%22width%3A%20220px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_1-1722445639973.png%22%20style%3D%22width%3A%20220px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_1-1722445639973.png%22%20style%3D%22width%3A%20220px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_1-1722445639973.png%22%20style%3D%22width%3A%20220px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_1-1722445639973.png%22%20style%3D%22width%3A%20220px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_1-1722445639973.png%22%20style%3D%22width%3A%20220px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_1-1722445639973.png%22%20style%3D%22width%3A%20220px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_1-1722445639973.png%22%20style%3D%22width%3A%20220px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_1-1722445639973.png%22%20style%3D%22width%3A%20220px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F66675iAA63344DD8E032F5%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22jthi_1-1722445639973.png%22%20alt%3D%22jthi_1-1722445639973.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3Equindi%20puoi%20eseguire%20lo%20script%20e%20ti%20chieder%C3%A0%20alcune%20cose%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22jthi_0-1722445470437.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1722445470437.png%22%20style%3D%22width%3A%20344px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1722445470437.png%22%20style%3D%22width%3A%20344px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1722445470437.png%22%20style%3D%22width%3A%20344px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1722445470437.png%22%20style%3D%22width%3A%20344px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1722445470437.png%22%20style%3D%22width%3A%20344px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1722445470437.png%22%20style%3D%22width%3A%20344px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1722445470437.png%22%20style%3D%22width%3A%20344px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1722445470437.png%22%20style%3D%22width%3A%20344px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1722445470437.png%22%20style%3D%22width%3A%20344px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1722445470437.png%22%20style%3D%22width%3A%20344px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F66674i2E34B119C45AA7AB%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22jthi_0-1722445470437.png%22%20alt%3D%22jthi_0-1722445470437.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3ECompilarli%20e%20premere%20OK%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22jthi_2-1722445724506.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_2-1722445724506.png%22%20style%3D%22width%3A%20344px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_2-1722445724506.png%22%20style%3D%22width%3A%20344px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_2-1722445724506.png%22%20style%3D%22width%3A%20344px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_2-1722445724506.png%22%20style%3D%22width%3A%20344px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_2-1722445724506.png%22%20style%3D%22width%3A%20344px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_2-1722445724506.png%22%20style%3D%22width%3A%20344px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_2-1722445724506.png%22%20style%3D%22width%3A%20344px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_2-1722445724506.png%22%20style%3D%22width%3A%20344px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_2-1722445724506.png%22%20style%3D%22width%3A%20344px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_2-1722445724506.png%22%20style%3D%22width%3A%20344px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F66676i5A403C01C7780BEA%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22jthi_2-1722445724506.png%22%20alt%3D%22jthi_2-1722445724506.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EAggiunger%C3%A0%20quindi%20la%20tabella%20al%20report%20esistente%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22jthi_3-1722445739773.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_3-1722445739773.png%22%20style%3D%22width%3A%20211px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_3-1722445739773.png%22%20style%3D%22width%3A%20211px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_3-1722445739773.png%22%20style%3D%22width%3A%20211px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_3-1722445739773.png%22%20style%3D%22width%3A%20211px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_3-1722445739773.png%22%20style%3D%22width%3A%20211px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_3-1722445739773.png%22%20style%3D%22width%3A%20211px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_3-1722445739773.png%22%20style%3D%22width%3A%20211px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_3-1722445739773.png%22%20style%3D%22width%3A%20211px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_3-1722445739773.png%22%20style%3D%22width%3A%20211px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_3-1722445739773.png%22%20style%3D%22width%3A%20211px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F66677i64CDEACA9D82BC26%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22jthi_3-1722445739773.png%22%20alt%3D%22jthi_3-1722445739773.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%20%3C%2FP%3E%0A%3CP%3EScript%20qui%20sotto%20(e%20anche%20allegato).%20%3CSTRONG%3EUtilizzare%20a%20proprio%20rischio%2C%20i%20calcoli%20non%20sono%20stati%20controllati%3C%2FSTRONG%3E%3C%2FP%3E%0A%3CP%3E%20%3C%2FP%3E%0A%3CDIV%20class%3D%22lia-spoiler-container%22%3E%3CA%20class%3D%22lia-spoiler-link%22%20href%3D%22%23%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3EVisualizza%20altro...%3C%2FA%3E%3CNOSCRIPT%3E(Evidenziare%20da%20leggere)%3C%2FNOSCRIPT%3E%3CDIV%20class%3D%22lia-spoiler-border%22%3E%3CDIV%20class%3D%22lia-spoiler-content%22%3E%0A%3CPRE%3E%3CCODE%20class%3D%22%20language-jsl%22%3E%2F*%22%22%22%20Add%20risk%20table%20to%20Survival%20platform%0A%0AAuthor%3A%20jthi%0ACreation%20Date%3A%202024-07-31%0ACreation%20JMP%20Version%3A%20JMP%20Pro%2018.0.1%0A%0ADescription%3A%20Based%20on%0A%09https%3A%2F%2Fcommunity.jmp.com%2Ft5%2FDiscussions%2FDisplaying-at-risk-tables-under-kaplan-meier%2Fm-p%2F305898%2Fhighlight%2Ftrue%23M56162%0A%0ATodo%3A%0A%20%20%20%20*%20Show%20steps%20to%20user%20before%20pressing%20OK%0A%20%20%20%20*%20Remove%20modal%20window%0A%20%20%20%20*%20Turn%20into%20add-in%20%2F%20proper%20script%0A%20%20%20%20*%20Add%20instructions%20%2F%20title%20to%20UI%0A%20%20%20%20*%20Add%20utility%20modal%0A%09%0A%22%22%22*%2F%0A%0ANames%20Default%20To%20Here(1)%3B%0A%0Aask_steps%20%3D%20function(%7B%7D%2C%20%7BDefault%20Local%7D%2C%0A%09nw%20%3D%20New%20Window(%22Fill%20in%20Time%20to%20Event%20Steps%22%2C%20%26lt%3B%26lt%3B%20Type(%22Modal%20Dialog%22)%2C%20%26lt%3B%26lt%3B%20Return%20Result%2C%0A%09%09H%20List%20Box(%0A%09%09%09Panel%20Box(%22Fill%20in%20steps%22%2C%0A%09%09%09%09Lineup%20Box(N%20Col(2)%2C%0A%09%09%09%09%09Text%20Box(%22Min%20Time%22)%2C%0A%09%09%09%09%09neb_min%20%3D%20Number%20Edit%20Box(.)%2C%0A%09%09%09%09%09Text%20Box(%22Max%20Time%22)%2C%0A%09%09%09%09%09neb_max%20%3D%20Number%20Edit%20Box(.)%2C%0A%09%09%09%09%09Text%20Box(%22Step%20Time%22)%2C%0A%09%09%09%09%09neb_step%20%3D%20Number%20Edit%20Box(.)%2C%0A%09%09%09%09%09Text%20Box(%22Interpolate%20last%22)%2C%0A%09%09%09%09%09cb_interpolate%20%3D%20Check%20Box(%7B%22%22%7D%2C%20%26lt%3B%26lt%3B%20Set%20All(1))%0A%09%09%09%09)%0A%09%09%09)%2C%0A%09%09%09Spacer%20Box(Size(20%2C%200))%2C%0A%09%09%09Panel%20Box(%22Actions%22%2C%0A%09%09%09%09Button%20Box(%22OK%22)%2C%0A%09%09%09%09Button%20Box(%22Cancel%22)%0A%09%09%09)%0A%09%09)%0A%09%09%2C%20%26lt%3B%26lt%3B%20Set%20Window%20Icon(%22Survival%22)%0A%09)%3B%0A%09%0A%09If(nw%5B%22Button%22%5D%20!%3D%201%2C%0A%09%09Throw(%22Cancelled%22)%3B%0A%09)%3B%0A%09%0A%09min_t%20%3D%20nw%5B%22neb_min%22%5D%3B%0A%09max_t%20%3D%20nw%5B%22neb_max%22%5D%3B%0A%09step_t%20%3D%20nw%5B%22neb_step%22%5D%3B%0A%0A%09If(Any(Is%20Missing(min_t)%2C%20Is%20Missing(max_t)%2C%20Is%20Missing(step_t))%2C%0A%09%09Throw(%22Steps%20not%20filled%20in%22)%3B%0A%09)%3B%0A%09%0A%09interpolate_last%20%3D%20N%20Items(nw%5B%22cb_interpolate%22%5D)%3B%0A%0A%09return(Eval%20List(%7Bmin_t%2C%20max_t%2C%20step_t%2C%20interpolate_last%7D))%3B%0A)%3B%0A%0Aadd_risk_table%20%3D%20function(%7Bplatform_ref%2C%20min_t%2C%20max_t%2C%20step_t%2C%20interpolate_last%7D%2C%20%7BDefault%20Local%7D%2C%0A%0A%09rep%20%3D%20Report(platform_ref)%3B%0A%09dt%20%3D%20platform_ref%20%26lt%3B%26lt%3B%20Get%20Data%20Table%3B%0A%09%0A%09ycol%20%3D%20((rep%20%26lt%3B%26lt%3B%20XPath(%22%2F%2FTextBox%5Btext()%3D'Time%20to%20event%3A%20'%5D%22))%5B1%5D%20%26lt%3B%26lt%3B%20sib)%20%26lt%3B%26lt%3B%20get%20text%3B%0A%09grouping_col%20%3D%20((rep%20%26lt%3B%26lt%3B%20XPath(%22%2F%2FTextBox%5Btext()%3D'Grouped%20by%20'%5D%22))%5B1%5D%20%26lt%3B%26lt%3B%20sib)%20%26lt%3B%26lt%3B%20get%20text%3B%0A%09Summarize(dt%2C%20groups%20%3D%20by(Eval(grouping_col)))%3B%0A%0A%09steps%20%3D%20min_t%3A%3Amax_t%3A%3Astep_t%3B%0A%09vals%20%3D%20steps%3B%0A%09%0A%09For%20Each(%7Bgroup%7D%2C%20groups%2C%0A%09%09m_tb%20%3D%20rep%5BOutlineBox(group)%2C%20Table%20Box(1)%5D%20%26lt%3B%26lt%3B%20get%20as%20matrix%3B%0A%09%09%0A%09%09times%20%3D%20m_tb%5B0%2C%201%5D%3B%0A%09%09atrisk%20%3D%20m_tb%5B0%2C%20N%20Cols(m_tb)%5D%3B%0A%09%09cur_steps%20%3D%20Step(steps%2C%20times%2C%20atrisk)%3B%20%2F%2F%20Last%20one%20isn't%20assumed%20in%20this%0A%09%09%0A%09%09If(interpolate_last%2C%0A%09%09%09If(times%5BN%20Rows(times)%2C%201%5D%20%26lt%3B%20max_t%20%26amp%3B%20Is%20Missing(cur_steps%5BN%20Cols(cur_steps)%5D)%2C%0A%09%09%09%09cur_steps%5BN%20Cols(cur_steps)%5D%20%3D%20atrisk%5BN%20Rows(times)%2C%201%5D%3B%0A%09%09%09)%3B%09%09%09%0A%09%09)%3B%0A%09%09vals%20%3D%20vals%20%7C%2F%20cur_steps%3B%0A%09)%3B%0A%0A%0A%09pb%20%3D%20Panel%20Box(%22Risk%20Table%22%2C%20tb_results%20%3D%20Table%20Box(%0A%09%09String%20Col%20Box(Eval%20Insert(%22No%20at%20Risk%20(%5Eycol%5E)%22)%2C%20groups)%2C%0A%09))%3B%0A%0A%0A%09For(i%20%3D%201%2C%20i%20%26lt%3B%3D%20N%20Cols(vals)%2C%20i%2B%2B%2C%0A%09%09cur_vals%20%3D%20vals%5B0%2C%20i%5D%3B%0A%09%09%0A%09%09title%20%3D%20Char(Remove%20From(cur_vals%2C%201)%5B1%5D)%3B%0A%09%09%0A%09%09tb_results%20%26lt%3B%26lt%3B%20Append(Number%20Col%20Box(title%2C%20cur_vals))%3B%0A%09)%3B%0A%0A%09rep%5BList%20Box(2)%5D%20%26lt%3B%26lt%3B%20Append(pb)%3B%0A%09rep%5BList%20Box(2)%5D%20%26lt%3B%26lt%3B%20Append(Spacer%20Box(Size(0%2C%2010)))%3B%0A)%3B%0A%0A%0A%0Acur_rep%20%3D%20Current%20Report()%3B%0AIf(Is%20Empty(cur_rep)%2C%0A%09Throw(%22No%20reports%20open%22)%3B%0A)%3B%0A%0Aob_ref%20%3D%20cur_rep%20%26lt%3B%26lt%3B%20XPath(%22%2F%2FOutlineBox%5B%40helpKey%3D'Surv'%5D%22)%3B%0A%0AIf(N%20Items(ob_ref)%20%3D%3D%200%2C%0A%09Throw(%22No%20Surv%20platform%20found%22)%3B%0A)%3B%0A%0ATry(%0A%09%7Bmin_t%2C%20max_t%2C%20step_t%2C%20interpolate_last%7D%20%3D%20ask_steps()%3B%0A%0A%09platform_ref%20%3D%20ob_ref%5B1%5D%20%26lt%3B%26lt%3B%20get%20scriptable%20object%3B%0A%0A%09add_risk_table(platform_ref%2C%20min_t%2C%20max_t%2C%20step_t%2C%20interpolate_last)%3B%0A%2C%0A%09Throw(%22Other%20issues%3A%20%22%20%7C%7C%20char(exception_msg))%3B%0A)%3B%0A%0A%0AWrite()%3B%3C%2FCODE%3E%3C%2FPRE%3E%0A%3C%2FDIV%3E%3CNOSCRIPT%3E%3CDIV%20class%3D%22lia-spoiler-noscript-container%22%3E%3CDIV%20class%3D%22lia-spoiler-noscript-content%22%3E%2F*%22%22%22%20Aggiungi%20tabella%20dei%20rischi%20alla%20piattaforma%20Survival%20Autore%3A%20jthi%20Data%20di%20creazione%3A%202024-07-31%20Versione%20JMP%20di%20creazione%3A%20JMP%20Pro%2018.0.1%20Descrizione%3A%20Basato%20su%20%3CA%20href%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2FDiscussions%2FDisplaying%22%20target%3D%22_blank%22%3Ehttps%3A%2F%2Fcommunity.jmp.com%2Ft5%2FDiscussions%2FDisplaying%3C%2FA%3E%20-at-risk-tables-under-kaplan-meier%2Fmp%2F305898%2Fhighlight%2Ftrue%23M56162%20Cose%20da%20fare%3A%20*%20Mostra%20i%20passaggi%20all'utente%20prima%20di%20premere%20OK%20*%20Rimuovi%20la%20finestra%20modale%20*%20Trasforma%20in%20componente%20aggiuntivo%2Fscript%20corretto%20*%20Aggiungi%20istruzioni%2Ftitolo%20all'interfaccia%20utente%20*%20Aggiungi%20modale%20di%20utilit%C3%A0%20%22%22%22*%2F%20Nomi%20predefiniti%20qui(1)%3B%20ask_steps%20%3D%20function(%7B%7D%2C%20%7BLocale%20predefinito%7D%2C%20nw%20%3D%20Nuova%20finestra(%22Compila%20tempo%20per%20passaggi%20evento%22%2C%20%26lt%3B%26lt%3B%20Tipo(%22Finestra%20modale%22)%2C%20%26lt%3B%26lt%3B%20Restituisce%20risultato%2C%20H%20Casella%20di%20riepilogo(%20Panel%20Box(%22Compila%20in%20passi%22%2C%20Casella%20di%20selezione(N%20Col(2)%2C%20Casella%20di%20testo(%22Tempo%20minimo%22)%2C%20neb_min%20%3D%20Casella%20di%20modifica%20numero(.)%2C%20Casella%20di%20testo(%22Tempo%20massimo%22)%2C%20neb_max%20%3D%20Casella%20di%20modifica%20numero(.)%2C%20Testo%20Box(%22Ora%20passo%22)%2C%20neb_step%20%3D%20Casella%20di%20modifica%20numero(.)%2C%20Casella%20di%20testo(%22Interpola%20ultimo%22)%2C%20cb_interpolate%20%3D%20Casella%20di%20controllo(%7B%22%22%7D%2C%20%26lt%3B%26lt%3B%20Imposta%20tutto(1))%20)%20)%2C%20Casella%20spaziatore(%20Dimensione(20%2C%200))%2C%20Casella%20pannello(%22Azioni%22%2C%20Casella%20pulsanti(%22OK%22)%2C%20Casella%20pulsanti(%22Annulla%22)%20)%20)%2C%20%26lt%3B%26lt%3B%20Imposta%20icona%20finestra(%22Sopravvivenza%22)%20)%3B%20Pulsante%22%5D%20!%3D%201%2C%20Lancia(%22Annullato%22)%3B%20)%3B%20min_t%20%3D%20nw%5B%22neb_min%22%5D%3B%20max_t%20%3D%20nw%5B%22neb_max%22%5D%3B%20passo_t%20%3D%20nw%5B%22neb_pass%22%5D%3B%20If(Qualsiasi(Manca(%20min_t)%2C%20%C3%88%20mancante(max_t)%2C%20%C3%88%20mancante(step_t))%2C%20Throw(%22Passi%20non%20compilati%22%20)%3B%20interpolate_last%20%3D%20N%20Items(nw%5B%22cb_interpolate%22%5D)%3B%20%2C%20passo_t%2C%20interpola_ultimo%7D))%3B%20add_risk_table%20%3D%20function(%7Bplatform_ref%2C%20min_t%2C%20max_t%2C%20step_t%2C%20interpolate_last%7D%2C%20%7BDefault%20Local%7D%2C%20rep%20%3D%20Report(platform_ref)%3B%20dt%20%3D%20platform_ref%20%26lt%3B%26lt%3B%20Ottieni%20tabella%20dati%3B%20ycol%20%3D%20((rep%20%26lt%3B%26lt%3B%20XPath(%22%2F%2FTextBox%20%5Btext()%3D'Tempo%20all'evento%3A%20'%5D%22))%5B1%5D%20%26lt%3B%26lt%3B%20sib)%20%26lt%3B%26lt%3B%20ottieni%20testo%3B%20grouping_col%20%3D%20((rep%20%26lt%3B%26lt%3B%20XPath(%22%2F%2FTextBox%5Btext()%3D'Raggruppato%20per%20'%5D%20%22))%5B1%5D%20%26lt%3B%26lt%3B%20sib)%20%26lt%3B%26lt%3B%20ottieni%20testo%3B%20Riepiloga(dt%2C%20groups%20%3D%20by(Eval(grouping_col)))%3B%20passi%20%3D%20min_t%3A%3Amax_t%3A%3Apasso_t%3B%20vals%20%3D%20passi%3B%20For%20Each(%7Bgruppo%7D%20%2C%20gruppi%2C%20m_tb%20%3D%20rep%5BOutlineBox(gruppo)%2C%20Table%20Box(1)%5D%20%26lt%3B%26lt%3B%20ottieni%20come%20matrice%3B%20volte%20%3D%20m_tb%5B0%2C%201%5D%3B%20atrisk%20%3D%20m_tb%5B0%2C%20N%20Cols(m_tb)%5D%3B%20passaggi%2C%20volte%2C%20atrisk)%3B%20%2F%2F%20L'ultimo%20non%20%C3%A8%20presupposto%20in%20questo%20If(interpolate_last%2C%20If(times%5BN%20Rows(times)%2C%201%5D%20%26lt%3B%20max_t%20%26amp%3B%20Is%20Missing(cur_steps%5BN%20Cols(cur_steps)%5D)%2C%20cur_steps%20%5BN%20Cols(cur_steps)%5D%20%3D%20atrisk%5BN%20Rows(times)%2C%201%5D)%3B%20vals%20%3D%20vals%20%7C%2F%20cur_steps%3B%20)%3B%20(Eval%20Insert(%22No%20a%20rischio%20(%5Eycol%5E)%22)%2C%20gruppi)%2C%20))%3B%20For(i%20%3D%201%2C%20i%20%26lt%3B%3D%20N%20Cols(vals)%2C%20i%2B%2B%2C%20cur_vals%20%3D%20vals%5B0%2C%20i%5D%3B%20titolo%20%3D%20Char(Rimuovi%20da(cur_vals%2C%201)%5B1%5D)%3B%20tb_results%20%26lt%3B%26lt%3B%20Append(Numero%20Col%20Box(titolo%2C%20cur_vals))%3B%20)%3B%20rep%5BCasella%20di%20elenco(2)%5D%20%26lt%3B%26lt%3B%20Aggiungi(pb)%3B%20rep%5BList%20Box(2)%5D%20%26lt%3B%26lt%3B%20Append(Spacer%20Box(Size(0%2C%2010)))%3B%20)%3B%20cur_rep%20%3D%20Rapporto%20corrente()%3B%20If(%C3%88%20vuoto(cur_rep)%2C%20Throw(%22Nessun%20report%20aperto%22)%3B%20)%3B%20ob_ref%20%E2%80%8B%E2%80%8B%3D%20cur_rep%20%26lt%3B%26lt%3B%20XPath(%22%2F%2FOutlineBox%5B%40helpKey%3D'Surv'%5D%22)%3B%20If(N%20elementi(ob_ref)%20%3D%3D%200%2C%20Throw(%22Nessuna%20piattaforma%20Surv%20trovata%22)%3B%20)%3B%20Try(%20%7Bmin_t%2C%20max_t%2C%20step_t%2C%20interpolate_last%7D%20%3D%20ask_steps()%3B%20platform_ref%20%3D%20ob_ref%5B1%5D%20%26lt%3B%26lt%3B%20ottieni%20oggetto%20scriptabile%3B%20add_risk_table(platform_ref%2C%20min_t%2C%20max_t%2C%20step_t%2C%20interpolate_last)%3B%20%2C%20Throw(%22Altri%20problemi%3A%20%22%20%7C%20%7C.char(msg_eccezione))%3B%20Scrivere()%3B%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FNOSCRIPT%3E%3C%2FDIV%3E%3C%2FDIV%3E%0A%3CP%3E%20%3C%2FP%3E%0A%3CP%3E%20%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-844400%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERi%3A%20Tabella%20dei%20rischi%20del%20grafico%20KM%20su%20JMP%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-844400%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EGrazie%20per%20questo%20script!%20Mi%20piace%20molto.%20Quando%20genero%20pi%C3%B9%20curve%20di%20sopravvivenza%20contemporaneamente%20usando%20la%20configurazione%20sottostante%20(%22Grouping%22%20e%20%22By%22%20specificati)%2C%20la%20tabella%20dei%20rischi%20viene%20aggiunta%20solo%20al%20primo%20grafico.%20C'%C3%A8%20un%20modo%20per%20aggiungerla%20a%20tutti%3F%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22PanelWildcat806_0-1740534582505.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22PanelWildcat806_0-1740534582505.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22PanelWildcat806_0-1740534582505.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22PanelWildcat806_0-1740534582505.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22PanelWildcat806_0-1740534582505.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22PanelWildcat806_0-1740534582505.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22PanelWildcat806_0-1740534582505.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22PanelWildcat806_0-1740534582505.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22PanelWildcat806_0-1740534582505.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22PanelWildcat806_0-1740534582505.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F73346iB83E8C150FEFDBC5%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22PanelWildcat806_0-1740534582505.png%22%20alt%3D%22PanelWildcat806_0-1740534582505.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-844403%22%20slang%3D%22en-US%22%20mode%3D%22UPDATE%22%3ERi%3A%20Tabella%20dei%20rischi%20del%20grafico%20KM%20su%20JMP%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-844403%22%20slang%3D%22en-US%22%20mode%3D%22UPDATE%22%3E%3CP%3EDovrebbe%20essere%20possibile%2C%20ma%20richieder%C3%A0%20delle%20modifiche%20allo%20script.%20Puoi%20provare%20se%20questa%20versione%20funziona%20per%20te%3A%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CDIV%20class%3D%22lia-spoiler-container%22%3E%3CA%20class%3D%22lia-spoiler-link%22%20href%3D%22%23%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3EVedi%20altro...%3C%2FA%3E%3CNOSCRIPT%3E(Evidenziare%20per%20leggere)%3C%2FNOSCRIPT%3E%3CDIV%20class%3D%22lia-spoiler-border%22%3E%3CDIV%20class%3D%22lia-spoiler-content%22%3E%0A%3CPRE%3E%3CCODE%20class%3D%22%20language-jsl%22%3ENames%20Default%20To%20Here(1)%3B%0A%0Aask_steps%20%3D%20function(%7B%7D%2C%20%7BDefault%20Local%7D%2C%0A%09nw%20%3D%20New%20Window(%22Fill%20in%20Time%20to%20Event%20Steps%22%2C%20%26lt%3B%26lt%3B%20Type(%22Modal%20Dialog%22)%2C%20%26lt%3B%26lt%3B%20Return%20Result%2C%0A%09%09H%20List%20Box(%0A%09%09%09Panel%20Box(%22Fill%20in%20steps%22%2C%0A%09%09%09%09Lineup%20Box(N%20Col(2)%2C%0A%09%09%09%09%09Text%20Box(%22Min%20Time%22)%2C%0A%09%09%09%09%09neb_min%20%3D%20Number%20Edit%20Box(.)%2C%0A%09%09%09%09%09Text%20Box(%22Max%20Time%22)%2C%0A%09%09%09%09%09neb_max%20%3D%20Number%20Edit%20Box(.)%2C%0A%09%09%09%09%09Text%20Box(%22Step%20Time%22)%2C%0A%09%09%09%09%09neb_step%20%3D%20Number%20Edit%20Box(.)%2C%0A%09%09%09%09%09Text%20Box(%22Interpolate%20last%22)%2C%0A%09%09%09%09%09cb_interpolate%20%3D%20Check%20Box(%7B%22%22%7D%2C%20%26lt%3B%26lt%3B%20Set%20All(1))%0A%09%09%09%09)%0A%09%09%09)%2C%0A%09%09%09Spacer%20Box(Size(20%2C%200))%2C%0A%09%09%09Panel%20Box(%22Actions%22%2C%0A%09%09%09%09Button%20Box(%22OK%22)%2C%0A%09%09%09%09Button%20Box(%22Cancel%22)%0A%09%09%09)%0A%09%09)%0A%09%09%2C%20%26lt%3B%26lt%3B%20Set%20Window%20Icon(%22Survival%22)%0A%09)%3B%0A%09%0A%09If(nw%5B%22Button%22%5D%20!%3D%201%2C%0A%09%09Throw(%22Cancelled%22)%3B%0A%09)%3B%0A%09%0A%09min_t%20%3D%20nw%5B%22neb_min%22%5D%3B%0A%09max_t%20%3D%20nw%5B%22neb_max%22%5D%3B%0A%09step_t%20%3D%20nw%5B%22neb_step%22%5D%3B%0A%0A%09If(Any(Is%20Missing(min_t)%2C%20Is%20Missing(max_t)%2C%20Is%20Missing(step_t))%2C%0A%09%09Throw(%22Steps%20not%20filled%20in%22)%3B%0A%09)%3B%0A%09%0A%09interpolate_last%20%3D%20N%20Items(nw%5B%22cb_interpolate%22%5D)%3B%0A%0A%09return(Eval%20List(%7Bmin_t%2C%20max_t%2C%20step_t%2C%20interpolate_last%7D))%3B%0A)%3B%0A%0Aadd_risk_table%20%3D%20function(%7Bplatform_ref%2C%20min_t%2C%20max_t%2C%20step_t%2C%20interpolate_last%7D%2C%20%7BDefault%20Local%7D%2C%0A%0A%09rep%20%3D%20Report(platform_ref)%3B%0A%09dt%20%3D%20platform_ref%20%26lt%3B%26lt%3B%20Get%20Data%20Table%3B%0A%09%0A%09ycol%20%3D%20((rep%20%26lt%3B%26lt%3B%20XPath(%22%2F%2FTextBox%5Btext()%3D'Time%20to%20event%3A%20'%5D%22))%5B1%5D%20%26lt%3B%26lt%3B%20sib)%20%26lt%3B%26lt%3B%20get%20text%3B%0A%09grouping_col%20%3D%20((rep%20%26lt%3B%26lt%3B%20XPath(%22%2F%2FTextBox%5Btext()%3D'Grouped%20by%20'%5D%22))%5B1%5D%20%26lt%3B%26lt%3B%20sib)%20%26lt%3B%26lt%3B%20get%20text%3B%0A%09Summarize(dt%2C%20groups%20%3D%20by(Eval(grouping_col)))%3B%0A%0A%09steps%20%3D%20min_t%3A%3Amax_t%3A%3Astep_t%3B%0A%09vals%20%3D%20steps%3B%0A%09%0A%09For%20Each(%7Bgroup%7D%2C%20groups%2C%0A%09%09m_tb%20%3D%20rep%5BOutlineBox(group)%2C%20Table%20Box(1)%5D%20%26lt%3B%26lt%3B%20get%20as%20matrix%3B%0A%09%09%0A%09%09times%20%3D%20m_tb%5B0%2C%201%5D%3B%0A%09%09atrisk%20%3D%20m_tb%5B0%2C%20N%20Cols(m_tb)%5D%3B%0A%09%09cur_steps%20%3D%20Step(steps%2C%20times%2C%20atrisk)%3B%20%2F%2F%20Last%20one%20isn't%20assumed%20in%20this%0A%09%09%0A%09%09If(interpolate_last%2C%0A%09%09%09If(times%5BN%20Rows(times)%2C%201%5D%20%26lt%3B%20max_t%20%26amp%3B%20Is%20Missing(cur_steps%5BN%20Cols(cur_steps)%5D)%2C%0A%09%09%09%09cur_steps%5BN%20Cols(cur_steps)%5D%20%3D%20atrisk%5BN%20Rows(times)%2C%201%5D%3B%0A%09%09%09)%3B%09%09%09%0A%09%09)%3B%0A%09%09vals%20%3D%20vals%20%7C%2F%20cur_steps%3B%0A%09)%3B%0A%0A%0A%09pb%20%3D%20Panel%20Box(%22Risk%20Table%22%2C%20tb_results%20%3D%20Table%20Box(%0A%09%09String%20Col%20Box(Eval%20Insert(%22No%20at%20Risk%20(%5Eycol%5E)%22)%2C%20groups)%2C%0A%09))%3B%0A%0A%0A%09For(i%20%3D%201%2C%20i%20%26lt%3B%3D%20N%20Cols(vals)%2C%20i%2B%2B%2C%0A%09%09cur_vals%20%3D%20vals%5B0%2C%20i%5D%3B%0A%09%09%0A%09%09title%20%3D%20Char(Remove%20From(cur_vals%2C%201)%5B1%5D)%3B%0A%09%09%0A%09%09tb_results%20%26lt%3B%26lt%3B%20Append(Number%20Col%20Box(title%2C%20cur_vals))%3B%0A%09)%3B%0A%0A%09rep%5BList%20Box(2)%5D%20%26lt%3B%26lt%3B%20Append(pb)%3B%0A%09rep%5BList%20Box(2)%5D%20%26lt%3B%26lt%3B%20Append(Spacer%20Box(Size(0%2C%2010)))%3B%0A)%3B%0A%0A%0A%0Acur_rep%20%3D%20Current%20Report()%3B%0AIf(Is%20Empty(cur_rep)%2C%0A%09Throw(%22No%20reports%20open%22)%3B%0A)%3B%0A%0Aob_refs%20%3D%20cur_rep%20%26lt%3B%26lt%3B%20XPath(%22%2F%2FOutlineBox%5B%40helpKey%3D'Surv'%5D%22)%3B%0A%0AIf(N%20Items(ob_refs)%20%3D%3D%200%2C%0A%09Throw(%22No%20Surv%20platform%20found%22)%3B%0A)%3B%0A%0ATry(%0A%09%7Bmin_t%2C%20max_t%2C%20step_t%2C%20interpolate_last%7D%20%3D%20ask_steps()%3B%0A%09%0A%09For%20Each(%7Bob_ref%7D%2C%20ob_refs%2C%0A%09%09platform_ref%20%3D%20ob_ref%20%26lt%3B%26lt%3B%20get%20scriptable%20object%3B%0A%0A%09%09add_risk_table(platform_ref%2C%20min_t%2C%20max_t%2C%20step_t%2C%20interpolate_last)%3B%09%09%0A%09)%3B%0A%0A%2C%0A%09Throw(%22Other%20issues%3A%20%22%20%7C%7C%20char(exception_msg))%3B%0A)%3B%0A%0A%0AWrite()%3B%3C%2FCODE%3E%3C%2FPRE%3E%0A%3C%2FDIV%3E%3CNOSCRIPT%3E%3CDIV%20class%3D%22lia-spoiler-noscript-container%22%3E%3CDIV%20class%3D%22lia-spoiler-noscript-content%22%3EI%20nomi%20predefiniti%20sono%20qui(1)%3B%20ask_steps%20%3D%20function(%7B%7D%2C%20%7BDefault%20Local%7D%2C%20nw%20%3D%20Nuova%20finestra(%22Inserisci%20i%20passaggi%20del%20tempo%20per%20l'evento%22%2C%20%26lt%3B%26lt%3B%20Tipo(%22Finestra%20di%20dialogo%20modale%22)%2C%20%26lt%3B%26lt%3B%20Restituisci%20risultato%2C%20H%20Elenco%20casella(%20Pannello%20casella(%22Inserisci%20i%20passaggi%22%2C%20Lineup%20Box(N%20Col(2)%2C%20Casella%20di%20testo(%22Tempo%20minimo%22)%2C%20neb_min%20%3D%20Numero%20casella%20di%20modifica(.)%2C%20Casella%20di%20testo(%22Tempo%20massimo%22)%2C%20neb_max%20%3D%20Numero%20casella%20di%20modifica(.)%2C%20Casella%20di%20testo(%22Tempo%20del%20passaggio%22)%2C%20neb_step%20%3D%20Numero%20casella%20di%20modifica(.)%2C%20Casella%20di%20testo(%22Interpolazione%20dell'ultimo%22)%2C%20cb_interpolate%20%3D%20Casella%20di%20controllo(%7B%22%22%7D%2C%20%26lt%3B%26lt%3B%20Imposta%20tutto(1))%20)%20)%2C%20Spacer%20Box(Dimensione(20%2C%200))%2C%20Pannello%20casella(%22Azioni%22%2C%20Pulsante%20casella(%22OK%22)%2C%20Pulsante%20casella(%22Annulla%22)%20)%20)%20%2C%20%26lt%3B%26lt%3B%20Imposta%20icona%20finestra(%22Sopravvivenza%22)%20)%3B%20If(nw%5B%22Pulsante%22%5D%20!%3D%201%2C%20Throw(%22Annullato%22)%3B%20)%3B%20min_t%20%3D%20nw%5B%22neb_min%22%5D%3B%20max_t%20%3D%20nw%5B%22neb_max%22%5D%3B%20step_t%20%3D%20nw%5B%22neb_step%22%5D%3B%20If(Any(Is%20Missing(min_t)%2C%20Is%20Missing(max_t)%2C%20Is%20Missing(step_t))%2C%20Throw(%22Passaggi%20non%20compilati%22)%3B%20)%3B%20interpolate_last%20%3D%20N%20Items(nw%5B%22cb_interpolate%22%5D)%3B%20return(Eval%20List(%7Bmin_t%2C%20max_t%2C%20step_t%2C%20interpolate_last%7D))%3B%20)%3B%20add_risk_table%20%3D%20function(%7Bplatform_ref%2C%20min_t%2C%20max_t%2C%20step_t%2C%20interpolate_last%7D%2C%20%7BDefault%20Local%7D%2C%20rep%20%3D%20Report(platform_ref)%3B%20dt%20%3D%20platform_ref%20%26lt%3B%26lt%3B%20Ottieni%20tabella%20dati%3B%20ycol%20%3D%20((rep%20%26lt%3B%26lt%3B%20XPath(%22%2F%2FTextBox%5Btext()%3D'Tempo%20all'evento%3A%20'%5D%22))%5B1%5D%20%26lt%3B%26lt%3B%20sib)%20%26lt%3B%26lt%3B%20ottieni%20testo%3B%20grouping_col%20%3D%20((rep%20%26lt%3B%26lt%3B%20XPath(%22%2F%2FTextBox%5Btext()%3D'Raggruppato%20per%20'%5D%22))%5B1%5D%20%26lt%3B%26lt%3B%20sib)%20%26lt%3B%26lt%3B%20ottieni%20testo%3B%20Summarize(dt%2C%20groups%20%3D%20by(Eval(grouping_col)))%3B%20steps%20%3D%20min_t%3A%3Amax_t%3A%3Astep_t%3B%20vals%20%3D%20steps%3B%20For%20Each(%7Bgroup%7D%2C%20groups%2C%20m_tb%20%3D%20rep%5BOutlineBox(group)%2C%20Table%20Box(1)%5D%20%26lt%3B%26lt%3B%20ottieni%20come%20matrice%3B%20times%20%3D%20m_tb%5B0%2C%201%5D%3B%20atrisk%20%3D%20m_tb%5B0%2C%20N%20Cols(m_tb)%5D%3B%20cur_steps%20%3D%20Step(steps%2C%20times%2C%20atrisk)%3B%20%2F%2F%20L'ultimo%20non%20%C3%A8%20assunto%20in%20questo%20If(interpolate_last%2C%20If(times%5BN%20Rows(times)%2C%201%5D%20%26lt%3B%20max_t%20%26amp%3B%20Is%20Missing(cur_steps%5BN%20Cols(cur_steps)%5D)%2C%20cur_steps%5BN%20Cols(cur_steps)%5D%20%3D%20atrisk%5BN%20Rows(times)%2C%201%5D%3B%20)%3B%20)%3B%20vals%20%3D%20vals%20%7C%2F%20cur_steps%3B%20)%3B%20pb%20%3D%20Panel%20Box(%22Tabella%20dei%20rischi%22%2C%20tb_results%20%3D%20Table%20Box(%20String%20Col%20Box(%20Eval%20Insert(%22Nessuno%20a%20rischio%20(%5Eycol%5E)%22)%2C%20groups)%2C%20))%3B%20For(i%20%3D%201%2C%20i%20%26lt%3B%3D%20N%20Cols(vals)%2C%20i%2B%2B%2C%20cur_vals%20%3D%20vals%5B0%2C%20i%5D%3B%20title%20%3D%20Char(Remove%20From(cur_vals%2C%201)%5B1%5D)%3B%20tb_results%20%26lt%3B%26lt%3B%20Append(Number%20Col%20Box(title%2C%20cur_vals))%3B%20)%3B%20rep%5BList%20Box(2)%5D%20%26lt%3B%26lt%3B%20Append(pb)%3B%20rep%5BList%20Box(2)%5D%20%26lt%3B%26lt%3B%20Append(Spacer%20Box(Size(0%2C%2010)))%3B%20)%3B%20cur_rep%20%3D%20Current%20Report()%3B%20If(Is%20Empty(cur_rep)%2C%20Throw(%22Nessun%20report%20aperto%22)%3B%20)%3B%20ob_refs%20%3D%20cur_rep%20%26lt%3B%26lt%3B%20XPath(%22%2F%2FOutlineBox%5B%40helpKey%3D'Surv'%5D%22)%3B%20If(N%20Items(ob_refs)%20%3D%3D%200%2C%20Throw(%22Nessuna%20piattaforma%20Surv%20trovata%22)%3B%20)%3B%20Try(%20%7Bmin_t%2C%20max_t%2C%20step_t%2C%20interpolate_last%7D%20%3D%20ask_steps()%3B%20For%20Each(%7Bob_ref%7D%2C%20ob_refs%2C%20platform_ref%20%3D%20ob_ref%20%E2%80%8B%E2%80%8B%26lt%3B%26lt%3B%20ottieni%20l'oggetto%20scriptabile%3B%20add_risk_table(platform_ref%2C%20min_t%2C%20max_t%2C%20step_t%2C%20interpolate_last)%3B%20)%3B%20%2C%20Throw(%22Altri%20problemi%3A%20%22%20%7C%7C%20char(exception_msg))%3B%20)%3B%20Write()%3B%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FNOSCRIPT%3E%3C%2FDIV%3E%3C%2FDIV%3E%0A%3CP%3EHo%20apportato%20solo%20poche%20modifiche%20alla%20fine%20dello%20script%3A%20in%20pratica%20ne%20ho%20aggiunta%20una%20per%20ogni%20ciclo%20(e%20ho%20cambiato%20il%20nome%20di%20una%20variabile).%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CBR%20%2F%3E%0A%3CBR%20%2F%3E%0A%3CBR%20%2F%3E%0A%3CBR%20%2F%3E%0A%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-844582%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERi%3A%20Tabella%20dei%20rischi%20del%20grafico%20KM%20su%20JMP%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-844582%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EGrazie%20per%20la%20risposta%20rapida!%20Ricevo%20questo%20messaggio%3F%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22PanelWildcat806_0-1740594852451.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22PanelWildcat806_0-1740594852451.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22PanelWildcat806_0-1740594852451.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22PanelWildcat806_0-1740594852451.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22PanelWildcat806_0-1740594852451.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22PanelWildcat806_0-1740594852451.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22PanelWildcat806_0-1740594852451.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22PanelWildcat806_0-1740594852451.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F73366i537B073A8C654CB7%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22PanelWildcat806_0-1740594852451.png%22%20alt%3D%22PanelWildcat806_0-1740594852451.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-844586%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERi%3A%20Tabella%20dei%20rischi%20del%20grafico%20KM%20su%20JMP%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-844586%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EManca%20una%20s%20dalla%20riga%20100%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22jthi_0-1740595131358.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1740595131358.png%22%20style%3D%22width%3A%20319px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1740595131358.png%22%20style%3D%22width%3A%20319px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1740595131358.png%22%20style%3D%22width%3A%20319px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1740595131358.png%22%20style%3D%22width%3A%20319px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1740595131358.png%22%20style%3D%22width%3A%20319px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1740595131358.png%22%20style%3D%22width%3A%20319px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F73368iCB50CBACDFE1B63F%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22jthi_0-1740595131358.png%22%20alt%3D%22jthi_0-1740595131358.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EHo%20modificato%20il%20mio%20post%20precedente%20per%20risolvere%20il%20problema%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-844608%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERi%3A%20Tabella%20dei%20rischi%20del%20grafico%20KM%20su%20JMP%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-844608%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EGrazie%20ancora!%20Ora%20funziona!%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EPer%20controllare%20la%20qualit%C3%A0%20dell'output%2C%20ho%20appena%20rifatto%20una%20figura%20di%20riferimento%20(vedi%20sotto%20JMP%20vs%20riferimento)%20e%20ho%20notato%20alcuni%20dettagli.%20Partendo%20da%20sinistra%2C%20al%20tempo%20%3D%200%2C%20il%20numero%20a%20rischio%2C%2040%2C%20%C3%A8%20corretto%2C%20tuttavia%2C%20i%20punti%20temporali%20successivi%20sono%20gonfiati%20di%201.%20L'eccezione%20%C3%A8%20quando%20il%20numero%20reale%20%C3%A8%20zero%2C%20che%20lo%20script%20elenca%20accuratamente.%20Infine%2C%20c'%C3%A8%20un%201%20all'ultimo%20punto%20temporale%2C%20che%20non%20dovrebbe%20esserci.%20Potrei%20risolvere%20questo%20problema%20in%20Excel%2C%20ma%20sarebbe%20fantastico%20se%20ci%20fosse%20una%20correzione%20di%20script!%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22PanelWildcat806_2-1740600954048.png%22%20style%3D%22width%3A%20900px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22PanelWildcat806_2-1740600954048.png%22%20style%3D%22width%3A%20900px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22PanelWildcat806_2-1740600954048.png%22%20style%3D%22width%3A%20900px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22PanelWildcat806_2-1740600954048.png%22%20style%3D%22width%3A%20900px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22PanelWildcat806_2-1740600954048.png%22%20style%3D%22width%3A%20900px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F73378i4C80D16B89F2C940%2Fimage-dimensions%2F900x72%3Fv%3Dv2%22%20width%3D%22900%22%20height%3D%2272%22%20role%3D%22button%22%20title%3D%22PanelWildcat806_2-1740600954048.png%22%20alt%3D%22PanelWildcat806_2-1740600954048.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-844691%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERi%3A%20Tabella%20dei%20rischi%20del%20grafico%20KM%20su%20JMP%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-844691%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3ENon%20sono%20sicuro%20di%20quale%20calcolo%20sia%20sbagliato.%20Se%20%C3%A8%20nel%20mio%20script%2C%20puoi%20probabilmente%20correggerlo%20da%20qualche%20parte%20qui%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22jthi_0-1740633522054.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1740633522054.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1740633522054.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jthi_0-1740633522054.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F73382i60D84C4F17996960%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22jthi_0-1740633522054.png%22%20alt%3D%22jthi_0-1740633522054.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EAvrei%20bisogno%20di%20un%20set%20di%20dati%20di%20esempio%20con%20le%20risposte%20corrette%20per%20sapere%20quali%20dovrebbero%20essere%20i%20risultati%20(anche%20se%20l'opzione%20di%20interpolazione%20nel%20mio%20script%20non%20sembra%20funzionare%20correttamente).%3C%2FP%3E%3C%2FLINGO-BODY%3E%0A%20%0A%20%0A%20%20%3CLINGO-SUB%20id%3D%22lingo-sub-888072%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERi%3A%20Tabella%20dei%20rischi%20del%20grafico%20KM%20su%20JMP%3F%3C%2FLINGO-SUB%3E%0A%20%20%3CLINGO-BODY%20id%3D%22lingo-body-888072%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%0A%20%20%20%3CP%3EIn%20seguito%20al%20numero%20di%20rischio%20%22gonfiato%22.%20Utilizzando%20il%20tuo%20script%20(grazie!)%20sul%20dataset%20del%20cancro%20al%20polmone%20VP%2C%20ottengo%20un%20numero%20di%20rischio%20aggiuntivo%20pari%20a%20400%20per%20il%20gruppo%20standard%20e%20200%2C%20400%2C%20600%2C%20800%20per%20il%20gruppo%20di%20test.%3C%2FP%3E%20%0A%20%20%20%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22jkarcusbiojmpco_0-1752869954880.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jkarcusbiojmpco_0-1752869954880.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jkarcusbiojmpco_0-1752869954880.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F78557i91F24C3252E20922%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22jkarcusbiojmpco_0-1752869954880.png%22%20alt%3D%22jkarcusbiojmpco_0-1752869954880.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%20%0A%20%20%20%3CP%3Eguardando%20la%20tabella%20dei%20dati%2C%20i%20valori%20con%20il%20punto%20temporale%20esatto%20(200%20per%20lo%20standard%20-%20prima%20riga%20rosa)%20mostrano%20un%20numero%20di%20rischio%20corretto%2C%20tuttavia%20quando%20non%20c'%C3%A8%20una%20corrispondenza%20esatta%2C%20come%20400%2C%20600%20e%20800%2C%20lo%20script%20corrente%20sta%20importando%20il%20numero%20prima%20del%20punto%20temporale%20specificato.%20Sarebbe%20fantastico%20se%20lo%20scripting%20potesse%20risolvere%20questi%20casi.%3C%2FP%3E%20%0A%20%20%20%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22jkarcusbiojmpco_1-1752870291733.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jkarcusbiojmpco_1-1752870291733.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jkarcusbiojmpco_1-1752870291733.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F78558i8BA8453120D89F3B%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22jkarcusbiojmpco_1-1752870291733.png%22%20alt%3D%22jkarcusbiojmpco_1-1752870291733.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%20%0A%20%20%20%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22jkarcusbiojmpco_2-1752870542512.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jkarcusbiojmpco_2-1752870542512.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jkarcusbiojmpco_2-1752870542512.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.jmp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F78559i857808ECC433A27E%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22jkarcusbiojmpco_2-1752870542512.png%22%20alt%3D%22jkarcusbiojmpco_2-1752870542512.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%20%0A%20%20%20%3CBR%20%2F%3E%0A%20%20%3C%2FLINGO-BODY%3E%0A%20%0A%20%0A%20%20%3CLINGO-SUB%20id%3D%22lingo-sub-888364%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERi%3A%20Tabella%20dei%20rischi%20del%20grafico%20KM%20su%20JMP%3F%3C%2FLINGO-SUB%3E%0A%20%20%3CLINGO-BODY%20id%3D%22lingo-body-888364%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%0A%20%20%20%3CP%3ECosa%20dovrebbe%20visualizzare%20se%20non%20il%20valore%20precedente%3F%3C%2FP%3E%0A%20%20%3C%2FLINGO-BODY%3E
Choose Language Hide Translation Bar
doraemengs
Level III

Risk Table of KM plot on JMP?

According to https://community.jmp.com/t5/Discussions/Displaying-at-risk-tables-under-kaplan-meier/m-p/55338/high... , Could you please provide the method for generating a risk table underneath the KM plot? I tried to follow the script from the comment but it was closed to be solved. 

dt = Current Data Table ();
minT = 0;
maxT = 25;
stepT = 1;

Summarize( lv = by( :group) );
obj = Survival(
	Y( :time ),
	Censor( :"reject"n ),
	Grouping( :group ),
	Failure Plot( 0 ),
	SendToReport(
		Dispatch(
			{"Survival Plot"},
			"1",
			ScaleBox,
			{Min( 0 ), Max( 25 ), Inc( 1 ), Minor Ticks( 1 )}
		),
		Dispatch(
			{"Survival Plot"},
			"time",
			TextEditBox,
			{Set Text( "Times(years)" )}
		)
	)
) << report;
obj[List Box( 2 )] << append( Table Box( String Col Box( "No at Risk | Year", lv ) ) );
Tab1 = (obj[lv[1]][Table Box( 1 )] << get);
Tab2 = (obj[lv[2]][Table Box( 1 )] << get);
For( T = minT, T <= maxT, T += stepT,
	lp = Max( Loc( Matrix( Tab1 [years] ) <= T ) );
	AR1 = Tab1["At Risk"][lp];
	lp = Max( Loc( Matrix( Tab2 [years]) <= T ) );
	AR2 = Tab2["At Risk"][lp];
	obj[List Box( 2 )][Table Box( 1 )] << append( Number Col Box( Char( T ), {AR1, AR2} ) );
);

the out put showed as the attachment picture. Could you please to correct the script?

 

Thank you

1 ACCEPTED SOLUTION

Accepted Solutions
jthi
Super User

Re: Risk Table of KM plot on JMP?

I attempted to parametrize the code a bit further, does this do what you are looking for if you change minT, maxT, stepT, ycol, grouping and use your table

Names Default To Here(1);

dt = Open("$SAMPLE_DATA/Rats.jmp");

minT = 100;
maxT = 350;
stepT = 50;
ycol = "days";
grouping = "Group";

Summarize(dt, groups = by(Eval(grouping)));

obj = dt << Survival(
	Y(Eval(ycol)),
	Censor(:Censor),
	Grouping(Eval(grouping)),
	Show Points(1),
	SendToReport(
		Dispatch({"Survival Plot"}, "1", ScaleBox,
			{Min(minT), Max(maxT), Inc(stepT), Minor Ticks(1)}
		),

	)
);

rep = Report(obj);

rep[List Box(2)] << append(tb = Table Box(String Col Box("No at Risk ("||ycol||")", groups)));
rep[List Box(2)] << Append(Spacer Box(Size(0,20)));

tabs = {};
For Each({group}, groups,
	Insert Into(tabs, Eval List({rep[OutlineBox(group), Table Box(1)] << get}));
);


For(T = minT, T <= maxT, T += stepT,
	
	ARs = {};
	For Each({tab}, tabs,
		lp = Max(Loc(Matrix(tab[ycol]) <= T));
		Insert Into(ARS, tab["At Risk"][lp])
	);
		
	tb << append(Number Col Box(Char(T), ARs));
);

Edit: small fixes

-Jarmo

View solution in original post

11 REPLIES 11
jthi
Super User

Re: Risk Table of KM plot on JMP?

I attempted to parametrize the code a bit further, does this do what you are looking for if you change minT, maxT, stepT, ycol, grouping and use your table

Names Default To Here(1);

dt = Open("$SAMPLE_DATA/Rats.jmp");

minT = 100;
maxT = 350;
stepT = 50;
ycol = "days";
grouping = "Group";

Summarize(dt, groups = by(Eval(grouping)));

obj = dt << Survival(
	Y(Eval(ycol)),
	Censor(:Censor),
	Grouping(Eval(grouping)),
	Show Points(1),
	SendToReport(
		Dispatch({"Survival Plot"}, "1", ScaleBox,
			{Min(minT), Max(maxT), Inc(stepT), Minor Ticks(1)}
		),

	)
);

rep = Report(obj);

rep[List Box(2)] << append(tb = Table Box(String Col Box("No at Risk ("||ycol||")", groups)));
rep[List Box(2)] << Append(Spacer Box(Size(0,20)));

tabs = {};
For Each({group}, groups,
	Insert Into(tabs, Eval List({rep[OutlineBox(group), Table Box(1)] << get}));
);


For(T = minT, T <= maxT, T += stepT,
	
	ARs = {};
	For Each({tab}, tabs,
		lp = Max(Loc(Matrix(tab[ycol]) <= T));
		Insert Into(ARS, tab["At Risk"][lp])
	);
		
	tb << append(Number Col Box(Char(T), ARs));
);

Edit: small fixes

-Jarmo
doraemengs
Level III

Re: Risk Table of KM plot on JMP?

Hi Jarmo, Thank you for your help. It worked!

 

Best, Theerachai

jthi
Super User

Re: Risk Table of KM plot on JMP?

Here is also a script which can be used basically on Survivor report. It might work in most of the cases but  not sure if it will as I'm not that familiar with this JMP Platform or analysis. I also modified the calculations so they might not be exactly correct

 

First you have to have Survivor report open

jthi_1-1722445639973.png

then you can run the script and it will ask for few things

jthi_0-1722445470437.png

Fill in those and press OK

jthi_2-1722445724506.png

It will then add the table to your existing report

jthi_3-1722445739773.png

 

Script below (and also attached). Use at your own risk, the calculations have not been checked

 

View more...
/*""" Add risk table to Survival platform

Author: jthi
Creation Date: 2024-07-31
Creation JMP Version: JMP Pro 18.0.1

Description: Based on
	https://community.jmp.com/t5/Discussions/Displaying-at-risk-tables-under-kaplan-meier/m-p/305898/highlight/true#M56162

Todo:
    * Show steps to user before pressing OK
    * Remove modal window
    * Turn into add-in / proper script
    * Add instructions / title to UI
    * Add utility modal
	
"""*/

Names Default To Here(1);

ask_steps = function({}, {Default Local},
	nw = New Window("Fill in Time to Event Steps", << Type("Modal Dialog"), << Return Result,
		H List Box(
			Panel Box("Fill in steps",
				Lineup Box(N Col(2),
					Text Box("Min Time"),
					neb_min = Number Edit Box(.),
					Text Box("Max Time"),
					neb_max = Number Edit Box(.),
					Text Box("Step Time"),
					neb_step = Number Edit Box(.),
					Text Box("Interpolate last"),
					cb_interpolate = Check Box({""}, << Set All(1))
				)
			),
			Spacer Box(Size(20, 0)),
			Panel Box("Actions",
				Button Box("OK"),
				Button Box("Cancel")
			)
		)
		, << Set Window Icon("Survival")
	);
	
	If(nw["Button"] != 1,
		Throw("Cancelled");
	);
	
	min_t = nw["neb_min"];
	max_t = nw["neb_max"];
	step_t = nw["neb_step"];

	If(Any(Is Missing(min_t), Is Missing(max_t), Is Missing(step_t)),
		Throw("Steps not filled in");
	);
	
	interpolate_last = N Items(nw["cb_interpolate"]);

	return(Eval List({min_t, max_t, step_t, interpolate_last}));
);

add_risk_table = function({platform_ref, min_t, max_t, step_t, interpolate_last}, {Default Local},

	rep = Report(platform_ref);
	dt = platform_ref << Get Data Table;
	
	ycol = ((rep << XPath("//TextBox[text()='Time to event: ']"))[1] << sib) << get text;
	grouping_col = ((rep << XPath("//TextBox[text()='Grouped by ']"))[1] << sib) << get text;
	Summarize(dt, groups = by(Eval(grouping_col)));

	steps = min_t::max_t::step_t;
	vals = steps;
	
	For Each({group}, groups,
		m_tb = rep[OutlineBox(group), Table Box(1)] << get as matrix;
		
		times = m_tb[0, 1];
		atrisk = m_tb[0, N Cols(m_tb)];
		cur_steps = Step(steps, times, atrisk); // Last one isn't assumed in this
		
		If(interpolate_last,
			If(times[N Rows(times), 1] < max_t & Is Missing(cur_steps[N Cols(cur_steps)]),
				cur_steps[N Cols(cur_steps)] = atrisk[N Rows(times), 1];
			);			
		);
		vals = vals |/ cur_steps;
	);


	pb = Panel Box("Risk Table", tb_results = Table Box(
		String Col Box(Eval Insert("No at Risk (^ycol^)"), groups),
	));


	For(i = 1, i <= N Cols(vals), i++,
		cur_vals = vals[0, i];
		
		title = Char(Remove From(cur_vals, 1)[1]);
		
		tb_results << Append(Number Col Box(title, cur_vals));
	);

	rep[List Box(2)] << Append(pb);
	rep[List Box(2)] << Append(Spacer Box(Size(0, 10)));
);



cur_rep = Current Report();
If(Is Empty(cur_rep),
	Throw("No reports open");
);

ob_ref = cur_rep << XPath("//OutlineBox[@helpKey='Surv']");

If(N Items(ob_ref) == 0,
	Throw("No Surv platform found");
);

Try(
	{min_t, max_t, step_t, interpolate_last} = ask_steps();

	platform_ref = ob_ref[1] << get scriptable object;

	add_risk_table(platform_ref, min_t, max_t, step_t, interpolate_last);
,
	Throw("Other issues: " || char(exception_msg));
);


Write();

 

 

-Jarmo

Re: Risk Table of KM plot on JMP?

Thanks for this script! I really like it. When I generate multiple survival curves at once using the set up below ("Grouping" and "By" specified), the at risk table is only added to the first plot. Is there a way to have it added to all of them? 

PanelWildcat806_0-1740534582505.png

 

jthi
Super User

Re: Risk Table of KM plot on JMP?

It should be possible but will require modifications to the script. You can try if this version works for you:

 

View more...
Names Default To Here(1);

ask_steps = function({}, {Default Local},
	nw = New Window("Fill in Time to Event Steps", << Type("Modal Dialog"), << Return Result,
		H List Box(
			Panel Box("Fill in steps",
				Lineup Box(N Col(2),
					Text Box("Min Time"),
					neb_min = Number Edit Box(.),
					Text Box("Max Time"),
					neb_max = Number Edit Box(.),
					Text Box("Step Time"),
					neb_step = Number Edit Box(.),
					Text Box("Interpolate last"),
					cb_interpolate = Check Box({""}, << Set All(1))
				)
			),
			Spacer Box(Size(20, 0)),
			Panel Box("Actions",
				Button Box("OK"),
				Button Box("Cancel")
			)
		)
		, << Set Window Icon("Survival")
	);
	
	If(nw["Button"] != 1,
		Throw("Cancelled");
	);
	
	min_t = nw["neb_min"];
	max_t = nw["neb_max"];
	step_t = nw["neb_step"];

	If(Any(Is Missing(min_t), Is Missing(max_t), Is Missing(step_t)),
		Throw("Steps not filled in");
	);
	
	interpolate_last = N Items(nw["cb_interpolate"]);

	return(Eval List({min_t, max_t, step_t, interpolate_last}));
);

add_risk_table = function({platform_ref, min_t, max_t, step_t, interpolate_last}, {Default Local},

	rep = Report(platform_ref);
	dt = platform_ref << Get Data Table;
	
	ycol = ((rep << XPath("//TextBox[text()='Time to event: ']"))[1] << sib) << get text;
	grouping_col = ((rep << XPath("//TextBox[text()='Grouped by ']"))[1] << sib) << get text;
	Summarize(dt, groups = by(Eval(grouping_col)));

	steps = min_t::max_t::step_t;
	vals = steps;
	
	For Each({group}, groups,
		m_tb = rep[OutlineBox(group), Table Box(1)] << get as matrix;
		
		times = m_tb[0, 1];
		atrisk = m_tb[0, N Cols(m_tb)];
		cur_steps = Step(steps, times, atrisk); // Last one isn't assumed in this
		
		If(interpolate_last,
			If(times[N Rows(times), 1] < max_t & Is Missing(cur_steps[N Cols(cur_steps)]),
				cur_steps[N Cols(cur_steps)] = atrisk[N Rows(times), 1];
			);			
		);
		vals = vals |/ cur_steps;
	);


	pb = Panel Box("Risk Table", tb_results = Table Box(
		String Col Box(Eval Insert("No at Risk (^ycol^)"), groups),
	));


	For(i = 1, i <= N Cols(vals), i++,
		cur_vals = vals[0, i];
		
		title = Char(Remove From(cur_vals, 1)[1]);
		
		tb_results << Append(Number Col Box(title, cur_vals));
	);

	rep[List Box(2)] << Append(pb);
	rep[List Box(2)] << Append(Spacer Box(Size(0, 10)));
);



cur_rep = Current Report();
If(Is Empty(cur_rep),
	Throw("No reports open");
);

ob_refs = cur_rep << XPath("//OutlineBox[@helpKey='Surv']");

If(N Items(ob_refs) == 0,
	Throw("No Surv platform found");
);

Try(
	{min_t, max_t, step_t, interpolate_last} = ask_steps();
	
	For Each({ob_ref}, ob_refs,
		platform_ref = ob_ref << get scriptable object;

		add_risk_table(platform_ref, min_t, max_t, step_t, interpolate_last);		
	);

,
	Throw("Other issues: " || char(exception_msg));
);


Write();

There are only few changes I did to the end of script, I basically just added one for each loop (and changed one variable name).

 

 

 

 

 

 

-Jarmo

Re: Risk Table of KM plot on JMP?

Thanks for the quick reply! I am getting this message though?

PanelWildcat806_0-1740594852451.png

 

jthi
Super User

Re: Risk Table of KM plot on JMP?

One s is missing  from line 100

jthi_0-1740595131358.png

I edited my earlier post to fix the issue

-Jarmo

Re: Risk Table of KM plot on JMP?

Thank you again! It works now! 

 

To QC the output, I just re-made a reference figure (see below JMP vs reference) and noticed a few details. Starting from the left, at time = 0, the number at risk, 40, is correct, however, subsequent timepoints are inflated by 1. The exception is when the true number is zero, which the script accurately lists. Lastly, there is a 1 at the last timepoint, which should not be there. I could fix this in Excel but would be amazing if there was a scripting fix!

 

PanelWildcat806_2-1740600954048.png

 

 

 

 

jthi
Super User

Re: Risk Table of KM plot on JMP?

Not sure which calculation is incorrect. If it is in my script, you can most likely fix it somewhere here

jthi_0-1740633522054.png

I would need example dataset with correct answers to know what the results should be (the interpolate option in my script doesn't seem to work correctly though).

-Jarmo

Recommended Articles