通過循環連接相等的 jmp 數據集(腳本)我有 100 個結構相同的數據集。 它們都包含一個 ID 和一個常量/字段,其中包含該數據集的名稱。
連接它們(格式“long”)很容易。
現在我需要將它們合併為“寬”格式,這同樣容易嗎?
我想使用該常量作為每個 JMP 數據集的前綴,但我怎樣才能讓它在循環中工作。
有什麼建議嗎?
非常感謝和親切的問候
新手
回复:通過循環連接相等的 jmp 數據集(腳本)我無法想像這些數據集代表什麼或生成的組合數據集的用途。 這些信息可能會幫助我們更好地解決您的問題。 如果數據集在結構上是相同的並且只包含重複的常量,那麼在我看來,對於您的問題有更有效的數據結構和數據方法。
那麼,您將在 JMP 中使用組合數據集做什麼?
回复:通過循環連接相等的 jmp 數據集(腳本)考慮到您提供的新信息,這是對我的原始腳本的修改。
您可能還想研究使用您的關聯數據表,並使用
表==>拆分
它可以讓你非常接近你想要的
Names Default To Here( 1 );
// Create example data tables to be used in the merging
dt = Open( "$SAMPLE_DATA/Blood Pressure.jmp" );
constants = "ABCDEFGHIJKLMNOP";
dt << delete columns( {"Subject", "Dose"} );
dt << New Column( "ID", character, formula( Char( Row() ) ) );
dt << Go To( :ID );
dt << Move Selected Columns( To First );
For( i = 2, i <= N Cols( dt ), i++,
Current Data Table( dt );
dt2 = dt << subset( selected rows( 0 ), columns( :ID, Column( i ) ) );
Column( dt2, 2 ) << set name( "Value1" );
dt2 << New Column( "Value2", formula( Floor( :Name( "Value1" ) + Random Integer( 5 ) ) ) );
dt2 << New Column( "Constant", character, set each value( Substr( constants, i - 1, 1 ) ) );
);
Wait( 0 );
Close( dt, nosave );
// Merge the tables together
// Get the table Names
tableList = {};
For( i = 1, i <= N Table(), i++,
Insert Into( tableList, Data Table( i ) << get name )
);
theConstant = Column( Data Table( tableList[N Items( tableList )] ), "Constant" )[1];
Data Table( tableList[N Items( tableList )] ) << New Column( theConstant || "_ID", character, formula( :ID ) );
Column( Data Table( tableList[N Items( tableList )] ), "Value1" ) << set name( theConstant || "_Value1" );
Column( Data Table( tableList[N Items( tableList )] ), "Value2" ) << set name( theConstant || "_Value2" );
// Loop across the tables and using Update put them back together
For( i = N Items( tableList ) - 1, i >= 1, i--,
theConstant = Column( Data Table( tableList[i] ), "Constant" )[1];
Data Table( tableList[i] ) << New Column( theConstant || "_ID", character, formula( :ID ) );
Column( Data Table( tableList[i] ), "Value1" ) << set name( theConstant || "_Value1" );
Column( Data Table( tableList[i] ), "Value2" ) << set name( theConstant || "_Value2" );
Data Table( tableList[N Items( tableList )] ) << Update( With( Data Table( tableList[i] ) ), Match Columns( :ID = :ID ) );
);
回复:通過循環連接相等的 jmp 數據集(腳本)不管出於什麼原因,我周五下午的帖子似乎迷路了……
這就是你在火車上工作時付出的代價,或者看起來是這樣。
我有 100 個數據集,每個數據集包含一個不同的常量:
例如
數據集1
ID 常數值 1 值 2
1 A 123 123
2 123 123
數據集2
1 B 456 456
2 乙 456 456
數據集3
1 C 789 789
2 C 789 789
我想要的只是將它們放入具有以下結構的單個數據集中:
A_ID A_CONSTANT A_VALUE1 A_VALUE2 B_ID B_CONSTANT B_VALUE1 B_VALUE2
1 A 123 123 1 B 456 456
2 A 123 123 2 B 456 456 等,
我看到有兩種方法可以到達那裡:
(1)先給每個數據集中的每一列添加一個前綴,然後按ID合併它們,或者
(2) 首先包含所有數據集,然後使用常量級別作為前綴轉置/翻轉/循環它們(但是,我發現 JMP 不喜歡混合數據類型)
任何想法如何到達那裡... ?
非常感謝任何幫助
新手
回复:通過循環連接相等的 jmp 數據集(腳本)嗨,TX,
我目前無法訪問 JMP(我正在旅行),但結果應該是這樣的。
現在,我自己看看結構,我認為連接,然後翻轉/循環連接表可能是一種簡單的方法(ID 並不那麼重要)。 但是,我仍然想了解這是否可以通過最簡單的(宏)循環來解決。
文件1:
ID 常數值
1 AB 123
2 AB 456
文件2:
ID 常數值
1 定義 123
2 定義 456
...
文件 100:
ID 常數值
1 Z 123
2 Z 456
CONSTANT的“循環”
期望的結果
AB_ID AB_Constant AB_Value DEF_ID DEF_ 常數 DEF_Value ... Z_ID Z_ 常數 Z_Value
1 AB 123 1 DEF 123 ... 1 Z 123
2 AB 456 2 DEF 456 ... 2 Z 123
回复:通過循環連接相等的 jmp 數據集(腳本)我不太清楚您希望輸出數據表是什麼樣子,但是,這是一個簡單的示例,它將合併數據表,類似於您描述的結構
Names Default To Here( 1 );
// Create example data tables to be used in the merging
dt = Open( "$SAMPLE_DATA/Blood Pressure.jmp" );
dt << delete columns( {"Subject", "Dose"} );
dt << New Column( "ID", character, formula( "A" || Char( Row() ) ) );
dt << Go To( :ID );
dt << Move Selected Columns( To First );
For( i = 2, i <= N Cols( dt ), i++,
current data table(dt);
dt2 = dt << subset( selected rows( 0 ), columns( :ID, Column( i ) ) );
dt2 << New Column("Table Name", character, set each value(dt2<<GET name=""></GET>