<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />嗨,大家好,
有人可以幫我解決以下問題嗎?
我想避免如下長公式:(每個元素都是一個列名!)
列(“標準”)<<添加列屬性(
公式(
標準差(
:F23 m A,:F23 m C,:F23 m H,:F23 MA,:F23 MC,:F23 MH,:F23 NA,:F23 NC,:F23 NH,
:F30 m A,:F30 m C,:F30 m H,:F30 MA,:F30 MC,:F30 MH,:F30 NA,:F30 NC,:F30 NH,
:F36 m A,:F36 m C,:F36 m H,:F36 MA,:F36 MC,:F36 MH,:F36 NA,:F36 NC,:F36 NH,
:F37 m A,:F37 m C,:F37 m H,:F37 MA,:F37 MC,:F37 MH,:F37 NA,:F37 NC,:F37 NH,
:F49 m A,:F49 m C,:F49 m H,:F49 MA,:F49 MC,:F49 MH,:F49 NA,:F49 NC,:F49 NH,
:F53 m A,:F53 m C,:F53 m H,:F53 MA,:F53 MC,:F53 MH,:F53 NA,:F53 NC,:F53 NH,
:F87 m A,:F87 m C,:F87 m H,:F87 MA,:F87 MC,:F87 MH,:F87 NA,:F87 NC,:F87 NH ) ) );
乾杯,
擔
上述兩種解決方案都可以,但請注意,對於 Ron 的解決方案,該公式可能僅在全局變量之前有效名稱被重新定義或清除,例如當 JMP 會話關閉時。
以下是比較這兩種方法的一些代碼:
dt =打開( "$SAMPLE_DATA/大類.jmp" ) ;
名稱= dt <<獲取列名;
// Ron 的方法:公式中的變量未計算
dt <<新列( “標準” ,公式(標准開發(名稱[ 4 :: 5 ]))) ;
// Ian 的方法:在設置公式之前評估變量
公式=評估表達式(標准開發(表達式(名稱[ 4 :: 5 ]))) ;
dt <<新列( “標準 2” ,公式(名稱表達式(公式))) ;
// 比較日誌中的公式
打印( :標準<<得到公式,標準2 <<得到公式) ;
//清除變量定義並添加行。 只有 Std2 會識別更改
清除全局變量() ;
當前數據表() <<連接(
打開( “$SAMPLE_DATA/Students2.jmp” ) ,
附加到第一個表
) ;
你好dank77 ,
伊恩@JMP的解決方案是正確的。 但是,如果您正在尋找不那麼嚴格的東西,您可以嘗試以下方法。
假設公式所需的列都在一個範圍內,您可以引入第一個和最後一個的數量,如下所示:
dt =打開( "$SAMPLE_DATA/大類.jmp" ) ;
名稱= dt <<獲取列名;
山口= dt <<新專欄( “標準” ) ;
山口<<設置公式(標准開發(名稱[ 4 :: 5 ] )) ;
最好的,
羅恩
此代碼“避免”,因為它使用當前選定的列,因此您不必鍵入。 請問這就是你要的嗎?
執行“文件 > 新建 > 新腳本”,剪切並粘貼 JSL,然後執行“編輯 > 運行腳本”。
名稱DefaultToHere ( 1 ) ;
// 做一個表
數控= 30 ;
dt =新表( “測試” ) ;
為了( C = 1 , C <=數控, C ++,
dt <<新列( “科爾” ||字符( C ) ,數字,連續的,公式(隨機正常())) ;
) ;
dt <<添加行( 100 ) ;
// 選擇一半的列
n =圓形的(數控/ 2 ) ;
C =隨機索引( NCol ( dt ) , n ) ;
為了(一世= 1 ,一世<= n ,一世++,
柱子( dt , C [一世]) <<設置選定( 1 ) ;
) ;
// 運行此代碼為表中當前選擇的列的標準偏差創建一個新的公式列
選擇列= dt <<獲取選定列;
添加科爾=表達式( dt <<新列( “標準差” ,數字,連續的,公式(標準差( colsTBD )))) ;
代入(添加科爾,表達式( colsTBD ) ,評估(選擇列)) ;
添加科爾;