根据公式创建多个新列嗨 jmp 社区
我有 19000 列 x 88 行,包含来自生物标志物表达的连续数据值。
我想为每个标记创建一个新列,其中包含减去生物标记表达值 - 参考值的公式。
不需要选择任何行,因为我想要生物标志物和参考的所有行。
所以它看起来很简单,但我很难将生物标志物数据插入到新列中(我已经测试了公式,但也没有用)
代码不包含任何迭代,因为我只是想先看看它是否适用于单个列

自动化和脚本基础数据分析与建模数据访问回复:根据公式创建多个新列你好@BioJmPCoder ,你能使用帖子按钮中的图标?
回复:根据公式创建多个新列以下是使用血压样本数据表在数据表中创建所有新列的示例。该脚本使用 2 种不同的方法来创建新列,以表明可以使用不同的方法来得出相同的结果。
names default to here(1);
// Open a sample data table to use for illustration
dt =
// Open Data Table: Blood Pressure.jmp
// → Data Table( "Blood Pressure" )
Open( "$SAMPLE_DATA/Blood Pressure.jmp" );
// Get all of the numeric continuous column names
colNames = dt << get column names( string, continuous );
// Method 1
// Cycle through all Numeric, Continuous columns and create
// a new column with the values from the original column,
// using "set each value()"
For Each( {col}, colNames,
dt << New Column( col || " Dif1", numeric, continuous,
format( "Fixed Dec", 3, 0 ),
set each value( as column(col))
)
);
// Method 2
// Cycle through all Numeric, Continuous columns and create
// a new column with the values from the original column,
// pulling all of the values for a column into a matrix,
// and then creating a new column and populating the new
// column with the values from the matrix
For Each( {col}, colNames,
theValues = column( col ) << get values;
dt << New Column( col || " Dif2", numeric, continuous,
format( "Fixed Dec", 3, 0 )
);
column( dt, nCols(dt) ) << set values( theValues );
);回复:根据公式创建多个新列嗨吉姆,
感谢您的意见,我正在尝试通过减去第 1 列中的值来规范化列的所有数据点。在这里我从第 3 列中获取值,但出现如下所示的错误。也许我需要对值进行矢量化,使它们不作为字符串?然后才能执行差异?
dt = Current data table();
col_names = dt << get column names(string, continuous);
markerCount = Column(3);
normCount = markerCount - Column(1);
dt << New Column( "Norm_" || col_names[3],
numeric,
continuous,
format( "Fixed Dec", 3, 2 ),
set each value( as column(normCount))
);
//set each value( as column(Column(3)) - column(Column(1)))<BR /><BR /><BR /><BR /><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image.png" style="width: 381px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="image.png" style="width: 381px;"><span class="lia-inline-image-display-wrapper" image-alt="image.png" style="width: 381px;"><img src="https://us.v-cdn.net/6038925/uploads/images/71119i06611C84D006971E/image.png" role="button" title="image.png" alt="image.png" /></span></SPAN></SPAN>
回复:根据公式创建多个新列关于如何操作数据表中的列与使用 JSL 变量似乎存在一些混淆。下面是一个脚本,它使用两种方法将“BP 6M”列中的值与“BP 8M”列中的值相减
方法 1 创建列 Norm_BP 6M,方法 2 创建列 Norm2_BP 6M

我对 JSL 进行了注释,希望能帮助您理解这两种不同的方法的作用
names default to here(1);
// Open a sample data table to use for illustration
dt =
// Open Data Table: Blood Pressure.jmp
// → Data Table( "Blood Pressure" )
Open( "$SAMPLE_DATA/Blood Pressure.jmp" );
// The data table has the following columns in it
// Subject, Dosec BP 8M, BP 12M, BP 6M, BP 8W, BP 12W, BP 6W,
// BP 8F, BP 12F, BP 6F, Norm_BP 6M
// Get all of the numeric continuous column names
col_Names = dt << get column names( string, continuous );
// Get Column Names returns a JMP List of column names
// of the columns that have a Modeling Type of Continuous
// {"BP 8M", "BP 12M", "BP 6M", "BP 8W", "BP 12W", "BP 6W",
// "BP 8F", "BP 12F", "BP 6F"}
// Note that the first 2 column in the data table, Subject and Dose
// are not in the list
// Note: Specifying
// Column( 1 )
// references the 1st column in the data table, which is Subject
// Specifying
// Column( col_Names[1] )
// references the 1st column in the col_Names List, which is BP 8M
// Method 1
// Create the new column. Set Each Value loops through each
// row in the data table and applies the specified formula
// which is to subtract the value in the 1st column in the
// col_Names list from the value in the 3rd column in the
// col_Names list
dt << New Column( "Norm_" || col_names[3],
numeric,
continuous,
Format( "Fixed Dec", 3, 2 ),
set each value( As Column( col_Names[3] ) - As Column( col_Names[1] ) )
);
// Method 2
// Perform the same subtraction, however do it by pulling all of the
// values from each of the 2 target columns into 2 matrices and then
// use matrix math to do the subtraction into an additional matrix
// and then take those values and put them into the new column
// Create the new column with no values
dt << New Column( "Norm2_" || col_names[3],
numeric,
continuous,
Format( "Fixed Dec", 3, 2 )
);
// Pull the data from the 2 columns in the data table
matCola = column( col_Names[1]) << get values;
matColb = column( col_Names[3]) << get values;
// Subtract the values in matCola from matColb
matResults = matColb - matCola;
// Put the results into the new column
column( "Norm2_" || col_names[3] ) << set values( matResults);