回复:重新編碼多列的 jsl 腳本謝謝!
回复:重新編碼多列的 jsl 腳本一種解決方法是根據您要重新編碼的列創建一個包含公式的新列。
然後刪除原來的列:)回复:重新編碼多列的 jsl 腳本非常感謝!
回复:重新編碼多列的 jsl 腳本這是使用 JSL 編寫的重新編碼功能的解決方案它比逐行處理快得多
Names Default To Here( 1 );
dmdt = current data table();
nc = dmdt << get column names( Character );
For( i = 1, i <= N Items( nc ), i++,
col = Column( dt, nc[i] );
colname = col << getname();
Eval(
Parse(
Eval Insert(
"\[
dmdt << Recode Column(
:Name("^colname^"),
{Map Value( _rcOrig,
{ "1", "too low",
"2", "too low",
"3", "right",
"4", "too high",
"5", "too high"},
Unmatched( _rcNow ) )},
Update Properties( 1 ),
Target Column( :Name("^colname^") )
);
]\"
)
)
);
);
回复:重新編碼多列的 jsl 腳本非常感謝,您的關聯數組代碼運行良好。
我也嘗試了另一種選擇,通過添加
Match(As Column( lstColNames_n3[i])[Row()],
但這沒有用。
但我解決了我的問題。
非常感謝。
回复:重新編碼多列的 jsl 腳本我編輯了我之前的回复,它應該有助於重新編碼回复:重新編碼多列的 jsl 腳本我需要重新編碼值。 謝謝。
回复:重新編碼多列的 jsl 腳本您是否必須重新編碼值,或者您是否可以使用列屬性值標籤(這樣您就不會丟失原始數據),例如:使用 JSL 腳本重新編碼多列
編輯:
如果你必須就地重新編碼它們,有多種方法可以做到這一點(我會使用關聯數組):
Names Default To Here(1);
dt3 = current data Table ();
n3 = dt3 << Get Column Names(string);
show(n3);
//create associative array to use matching keys to values
matchAa = Associative Array(
{"1","2","3","4","5"},
{"too low","too low","right","too high","too high"}
);
show(matchAa);
//loop over column names
For(i = 1, i <= N Items(n3), i++,
//refer to column and use set each value to update values
Column(dt3, n3[i]) << Set Each Value(
matchAa[AsColumn(n3[i])[Row()]]
);
);
對於您的解決方案,我認為您如何引用 Match 函數中的值存在問題,您必須添加 [Row()] 才能獲得匹配的單個值
Match(As Column( lstColNames_n3[i])[Row()],
編輯2:
添加了完整的示例腳本作為附件
jsl腳本重新編碼多列各位,
我正在嘗試使用以下腳本(也在附件中與示例數據表一起)重新編碼多個列。 我嘗試了幾次更改,但不起作用。 列中的值只是消失而不是被重新編碼。
我很感激任何幫助。
非常感謝,
馬塞洛.
dt3 = Current Data Table();
n3 = dt3 << Get Column Names();
Show( n3 );
lstColNames_n3 = dt3 << Get Column Names();
Show( lstColNames_n3 );
Show( lstCols_n3 );
lstCols_n3 = {};
For( i = 1, i <= N Items( lstColNames_n3 ), i++,
colName = lstColNames_n3[i];
col = Column( dt3, i );
Insert Into( lstCols_n3, col );
);
Show( lstCols_n3 );
For Each Row(
For( i = 1, i <= N Items( lstColNames_n3 ), i++,
As Column( lstColNames_n3[i] ) = Match( As Column( lstColNames_n3[i] ),
"1", "too low",
"2", "too low",
"3", "right",
"4", "too high",
"5", "too high"
)
)
);
高級統計建模自動化和腳本編寫數據混合和清理實驗設計大規模定制質量和工藝工程