用于可变列数的前缀的列堆栈的脚本我正在尝试生成一个通用脚本,它将我的数据从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”