無法在多變量中獲取列名稱嗨,
我正在嘗試自動化流程。以下是開頭部分的概述:
-Tabulate
- 做桌子
- 在所有連續列上運行多變量 - 所以我可以得到一個相關矩陣
我在奔跑多變量部分掙扎。我不知道如何把它放在那裡我想要的列。如果我知道列名並將其粘貼在此部分中,則此方法有效:
多元 (
ÿ ( 列在這裡的名字 ) ,
但是我不知道列名,所以我想放一個列表變量或者適合的東西。任何幫助非常感謝!
這是整個事情:
dt = data table("wpu10");
tab1= dt<<TABULATE></TABULATE>
Re:無法在多變量中獲取列名你很親密....試試這個
Names Default To Here( 1 );
dt = Data Table( "wpu10" );
tab1 = dt << Tabulate(
Add Table( Column Table( Grouping Columns( :series_id, :series_title ), Analysis Columns( :value ) ), Row Table( Grouping Columns( :year ) ) )
);
dtTab1 = tab1 << makeintodatatable;
dtTab1 << set name( "dtTab1" );
// Get Column names returns a list
colnameslist = dtTab1 << get column names( Continuous, string );
Multivariate(
Y( Eval List( colnameslist ) ),
Estimation Method( "Pairwise" ),
Matrix Format( "Square" ),
Scatterplot Matrix( Density Ellipses( 1 ), Shaded Ellipses( 0 ), Ellipse Color( 3 ) )
);
Re:無法在多變量中獲取列名Y()參數需要一個或列引用,而不是名稱(字符串)。這是使其工作的另一種方法:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Fitness.jmp" );
col name = dt << Get Column Names( "Continuous" );
col expr = Expr( Y() );
For( i = 1, i <= N Items( col name ), i++,
Insert Into( col expr, Column( col name[i] ) );
);
Eval(
Substitute(
Expr(
Multivariate(
yyy,
Estimation Method( "Pairwise" ),
Matrix Format( "Square" ),
Scatterplot Matrix( Density Ellipses( 1 ), Shaded Ellipses( 0 ), Ellipse Color( 3 ) )
);
),
Expr( yyy ),
Name Expr( col expr )
)
);Re:無法在多變量中獲取列名感謝您的幫助,但看起來我仍然遇到麻煩。我把它從我的日誌中取出來以防萬一它有幫助:
“總和(價值,WPU106,PPI金屬和金屬製品的商品數據 - 加熱設備,未經季節性調整)”,
“總和(價值,WPU107,PPI金屬和金屬製品的商品數據 - 製造的結構金屬產品,未經季節性調整)”,
角色至少需要1列。}
),多變量(/ * ### * / Y(Eval List(colnameslist)),
估算方法(“成對”),
矩陣格式(“Square”),Re:無法在多變量中獲取列名我嘗試調整你的solutino,但無法讓它給我多變量輸出。
我認為問題是我不知道列名。在我執行“dtTab1 = tab1 << makeintodatatable;”之後,我需要一種方法來獲取名稱。
也許你的代碼告訴我但仍然在努力去看看如何。你需要你有yyy的列名,還是那些有名字的變量?
Re:無法在多變量中獲取列名我不知道這些錯誤是如何相關的。您是否嘗試使用Tabulate標籤作為Y角色中多變量的列名?
暫時忘掉腳本。你能以交互方式實現結果嗎?也就是說,使用Tabulate以交互方式獲取摘要,將結果保存在新數據表中,然後啟動多變量?
列名稱如“Sum(... )“將被解釋為函數調用而不是Eval List()調用中的列引用,而無需特殊處理。
Re:無法在多變量中獲取列名您遇到的問題是從Tabulate表創建表時生成的複雜名稱。 在下面的腳本中,我已經將Tabulate替換為Summary平台。 這並沒有消除複雜的名稱問題,但確實在一個快速操作中創建了一個數據表,這在大多數情況下與Tabulate輸出相同。 腳本處理複雜名稱的作用是,列名稱列表中每個元素周圍的位置:Name()函數,直接指定JMP將函數的內容視為列名。 最後,將此列表傳遞到多變量平台以進行分析。
Names Default To Here( 1 );
dt = Data Table( "wpu10" );
/*tab1 = dt << Tabulate(
Add Table( Column Table( Grouping Columns( :series_id, :series_title ), Analysis Columns( :value) ), Row Table( Grouping Columns( :year) ) )
);
dtTab1 = tab1 << makeintodatatable;
dtTab1 << set name( "dtTab1" );*/
// Create the data table directly
dtTab1 = dt << Summary(
Group( :year ),
Sum( :value ),
Subgroup( :series_id, :series_title ),
Freq( "None" ),
Weight( "None" )
);
// Get Column names returns a list
colnameslist = dtTab1 << get column names( Continuous,string);
// Get rid of the Row Number column from the list
colnameslist = remove( colnameslist, 2, 1 );
// Create a new list adding the :Name() function around each column name
// to handle the complex names the summary gave them
thelist={};
For( i = 1, i <= N Items( colnameslist ), i++,
xx = colnameslist[i];
Insert Into( thelist, Parse( Eval Insert( ":Name(\!"^xx^\!")" ) ) );
);
// Run the correlations
dtTab1 << Multivariate(
Y( eval(thelist) ),
Estimation Method( "Pairwise" ),
Matrix Format( "Square" ),
Scatterplot Matrix( Density Ellipses( 1 ), Shaded Ellipses( 0 ), Ellipse Color( 3 ) )
);
另外,我會支持 @markbailey 在他的評論中,能夠以交互方式進行分析。 如果這不是你要反复做的分析,為什麼還要創建一個腳本。
Re:無法在多變量中獲取列名非常感謝您的幫助!我最終點擊了所有這一切。我今天早上試著聽你的最後一條消息,但仍然有點丟失。列名可能肯定是個問題。此外,當我手動執行並轉到dtTab1表然後轉到分析>多變量方法>多變量JMP認為我想對dt表執行此操作。直到我第二次經歷這個過程時,JMP意識到我想要在新桌子上做這件事。
我正在使用JMP 12所以我不知道這是否也會導致我的問題。
Re:無法在多變量中獲取列名你能分享數據表樣本嗎?
Re:無法在多變量中獲取列名是的,我所附的是我在你幫助過的代碼中掛斷的表格。我想從這個表(dtTab1)到相關係數表 - 就像從Analysis>多變量方法>多變量輸出創建的那樣。
正如我提到的那樣,即使我接手手動操作它有點時髦。在創建dtTab1之後,第一次執行上面描述的步驟時,用於進行多變量分析的列的提示來自內部表(一列中的所有索引以及另一列中的名稱)。如果你想要一個人,那就讓我知道吧)