用於可變列數的前綴的列堆棧的腳本我正在嘗試生成一個通用腳本,它將我的數據從excel導入為數據表,然後根據列名的前綴堆疊我的列。我希望它可以應用於不同的數據集(不是同時 - 只是一個可以應用於所有的通用腳本),每個數據集都有不同的樣本數(列),其中每個數據列列為:S01卷密度(%) ),S02 體積密度(%),S03體積密度(%)...... Sn Vol Density(其中n =任意整數)。
我想這樣做的方法是通過前綴對列進行分組,然後堆疊組,但我不確定如何繼續這樣做。
希望這是有道理的 - 對於腳本來說還是新手,如果我的問題不是最清楚,那就很抱歉
NB導入數據不是問題,只是堆疊
Re:用於可變列數的前綴的列堆棧的腳本是的,這是你如何做到這一點:
For( i = 1, i <= N Col( dt ), i++,
temp_name = Column( dt, i ) << Get Name;
If( Contains( temp_name, "Vol Density" ) > 0,
Column( dt, i ) << Set Name( Word( 1, temp_name ) )
);
);
Re:用於可變列數的前綴的列堆棧的腳本謝謝!如果我希望然後重新編碼列(使用腳本)以便只保留前綴,即只讀取S01,S02等,這可以以與堆棧類似的方式完成嗎?Re:用於可變列數的前綴的列堆棧的腳本你好 @nhun ,
歡迎來到社區!
只需很少的代碼就可以輕鬆完成。 這是循環列名稱的一種方法,並將具有匹配子串的那些插入到我們可以與Stack一起使用的列表中。 我使用樣本數據庫中的厚度數據集。
dt = Open("$SAMPLE_DATA/Quality Control/Thickness.jmp");
stack_cols = {}; //list to hold the names of columns I want to stack
str_match = "Thickness"; //Substring in column name I want to find
names = dt << Get Column Names;
for(i=1,i<=N Items(names),i++,
If(Contains(char(names[i]),str_match) > 0,
Insert Into(stack_cols, names[i])
)
);
dt << Stack(
columns(stack_cols),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);您只需要用自己的表替換dt並使用str_match =“Vol Density”