如何从日期值中提取单词中的月份以及如何更改异常值的默认标记?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />大家好。
1.) 如何从整列的日期值中提取单词中的月份?
假设单元格 #1 的日期为“ 2009年3月19日”。 我希望下一篇专栏能够获得月份 - ”行进”,在这个例子中。
2.) 有没有办法更改异常值的默认标记 - 例如全局将异常值标记设置为轮廓三角形?
感谢您的帮助。
回复:如何从日期值中提取单词中的月份以及如何更改异常值的默认标记?更复杂的版本:
Names Default To Here( 1 );
// make a sample data table
dt = New Table( "Data",
add rows( 10000 ),
New Column( "it", Numeric, Ordinal, Format( "Best", 8 ), Formula( Row() ) ),
New Column( "Batch", Numeric, Ordinal, Format( "Best", 8 ), formula( Random Integer( 110 ) ) ),
New Column( "y1", Numeric, Continues, Format( "Best", 8 ), formula( Random Lognormal( :Batch / 10, 5 ) ) ),
New Column( "y2", Numeric, Continues, Format( "Best", 8 ), formula( Random Lognormal( :Batch / 10, 5 ) ) ),
New Column( "Out",
Numeric,
Ordinal,
Format( "Best", 8 ),
Set Property( "Value Colors", {0 = -13977687, 1 = -4222943} ),
Color Cell by Value,
formula( 0 )
),
New Column( "Outy1",
Numeric,
Ordinal,
Format( "Best", 8 ),
Set Property( "Value Colors", {0 = -13977687, 1 = -4222943} ),
Color Cell by Value,
formula( 0 )
),
New Column( "Outy2",
Numeric,
Ordinal,
Format( "Best", 8 ),
Set Property( "Value Colors", {0 = -13977687, 1 = -4222943} ),
Color Cell by Value,
formula( 0 )
),
);
dt << run formulas;
Column( dt, "it" ) << delete formula;
Column( dt, "Batch" ) << delete formula;
Column( dt, "y1" ) << delete formula;
Column( dt, "y2" ) << delete formula;
Column( dt, "Out" ) << delete formula;
Column( dt, "Outy1" ) << delete formula;
Column( dt, "Outy2" ) << delete formula;
// now we get to work
// make a list of batches
byvarlist = Associative Array( dt:Batch ) << get keys;
// make a list of columns
cols = dt << get column names( Continuous ); //List all Numeric columns
// loop through the batches
For( i = 1, i <= N Items( byvarlist ), i++,
// select each batch
dt << select where( dt:Batch == byvarlist[i] );
// subset each batch
subdt = dt << Subset( Selected Rows( 1 ) );
// clear selection for smoth workflow
dt << clear select;
// finde outliers in each variable within each batch
For( ii = 1, ii <= N Items( cols ), ii++,
out = Eval(
Parse(
"subdt << get rows where(
subdt:" || Char( cols[ii] ) || " > Col Quantile( subdt:" || Char( cols[ii] ) ||
", 0.75 ) + 1.5 * (Col Quantile( subdt:" || Char( cols[ii] ) || ", 0.75 ) - Col Quantile( subdt:" || Char( cols[ii] ) ||
", 0.25 )) | subdt:" || Char( cols[ii] ) || " <
Col Quantile( subdt:" || Char( cols[ii] ) ||
", 0.25 ) - 1.5 * (Col Quantile( subdt:" || Char( cols[ii] ) || ", 0.75 ) - Col Quantile( subdt:" || Char( cols[ii] ) ||
", 0.25 )));"
)
)`;
Eval( Parse( "column (subdt, \!"Out" || Char( cols[ii] || "\!" )[" || Char( out ) || "] = 1;" ) ) );
// also indicate the global outlier
Column( subdt, "Out" )[out] = 1;
//wait (0.00001);
);
// update original data table with new information for the batch
subdt << delete columns( "Batch" );
subdt << delete columns( cols );
dt << Update( With( subdt ), Match Columns( :it = :it ) );
Close( subdt, No Save );
//Wait( 0.00001 );
);
dt << color by column( :Out );
回复:如何从日期值中提取单词中的月份以及如何更改异常值的默认标记?工作原理类似于 VLookup(false) 函数。
谢谢,伊恩!
回复:如何从日期值中提取单词中的月份以及如何更改异常值的默认标记?也许不是更好,但作为替代方案,您也可以使用“Month()”并定义值标签属性:
新表( “日期之月” ,
添加行( 1 ) ,
新专栏( “日期” ,
数字,
“连续的” ,
格式( “月/日/年” , 12 ) ,
输入格式( “月/日/年” ) ,
公式(今天() )
) ,
新专栏( “月” ,
数字,
“连续的” ,
格式( “最好的” , 12 ) ,
公式(月( :日期) ) ,
价值标签(
{ 1 = “一月” , 2 = “二月” , 3 = “行进” , 4 = “四月” , 5 = “可能” , 6
= “六月” , 7 = “七月” , 8 = “八月” , 9 = “九月” , 10 = “十月” , 11
= “十一月” , 12 = “十二月” }
) ,
使用值标签( 1 )
)
)
回复:如何从日期值中提取单词中的月份以及如何更改异常值的默认标记?很酷的脚本,罗恩!
我已经在 Fit Y by X、Distribution & Graph Builder 上尝试过了,效果非常好 *
非常感谢并钦佩您在 JMP、Ron & Jim 方面的专业知识。
回复:如何从日期值中提取单词中的月份以及如何更改异常值的默认标记?非常感激,吉姆!
我正打算放弃并选择 Substring() 或 Left()。
您的解决方案完美运行。
- 兰迪
回复:如何从日期值中提取单词中的月份以及如何更改异常值的默认标记?另一种不推荐的方法是更改图表中选定行的首选项。我不建议使用选择,因为其他一些命令将默认使用选择而不是表中的所有行。但你仍然可以尝试这个:
名称默认为此处( 1 ) ;
//注意:更改首选项将会
//影响JMP的默认行为。
优先(标记选择模式( 1 ) ) ; // 您也可以从文件>>首选项菜单中执行此操作,只需执行一次。
dt =打开( “$SAMPLE_DATA/大类.jmp” ) ;
// 获取列列表
列= dt <<获取列名(连续的) ; //列出所有数字列
为了(我= 1 ,我<= N 项(列) ,我++,
出去=评估(
解析(
“dt << 获取行,其中(
DT:” ||查尔(列[我] ) || " > Col 分位数( dt:" ||查尔(列[我] ) || ", 0.75 ) + 1.5 * (列分位数( dt:" ||
查尔(列[我] ) || ", 0.75 ) - Col 分位数( dt:" ||查尔(列[我] ) || “,0.25))| dt:” ||查尔(列[我] ) || ” <
列分位数( dt:"
||查尔(列[我] ) || ", 0.25 ) - 1.5 * (列分位数( dt:" ||查尔(列[我] ) || ", 0.75 ) - Col 分位数( dt:" ||查尔(列[我] ) ||
“,0.25)));”
)
) `;
已选择= dt <<选择行(出去) ;
已选择<<标记( 17 号) ;
//选定的<<标记大小(5); // 没有这个选项
) ;
// 看看它是什么样子
新窗户( “输出” ,
h 列表框(
分配(
连续分布(柱子( :高度) ,显示百分比( 1 ) ,自定义汇总统计数据(和( 1 ) ) ) ,
连续分布(柱子( :重量) ,显示百分比( 1 ) ,自定义汇总统计数据(和( 1 ) ) ) ,
发送至报告(
派遣( { “分布” , “高度” } , “分布直方图” ,框架盒, {调度段(历史段( 1 ) ,直方图颜色( 53 ) )} ) ,
派遣( { “分布” , “重量” } , “分布直方图” ,框架盒, {调度段(历史段( 1 ) ,直方图颜色( 53 ) )} )
)
) ,
双变量(是( :高度) , X ( :重量) )
)
) ;
回复:如何从日期值中提取单词中的月份以及如何更改异常值的默认标记?你好拉韦拉多,
特克斯尼尔森在这两个主题上都是正确的。但是,如果您想为单变量异常值设置标记(暴力风格),您可以尝试以下操作。
任何列中属于异常值的任何行现在都将具有特殊标记,这可能是一个优点(或缺点)。您可以修改它以在进行分析时标记特定列中的异常值。
祝你好运!
罗恩
名称默认为此处( 1 ) ;
dt =打开( “$SAMPLE_DATA/大类.jmp” ) ;
// 获取列列表
列= dt <<获取列名(连续的) ; //列出所有数字列
为了(我= 1 ,我<= N 项(列) ,我++,
出去=评估(
解析(
“dt << 获取行,其中(
DT:” ||查尔(列[我] ) || " > Col 分位数( dt:" ||查尔(列[我] ) || ", 0.75 ) + 1.5 * (列分位数( dt:" ||
查尔(列[我] ) || ", 0.75 ) - Col 分位数( dt:" ||查尔(列[我] ) || “,0.25))| dt:” ||查尔(列[我] ) || ” <
列分位数( dt:"
||查尔(列[我] ) || ", 0.25 ) - 1.5 * (列分位数( dt:" ||查尔(列[我] ) || ", 0.75 ) - Col 分位数( dt:" ||查尔(列[我] ) ||
“,0.25)));”
)
)` ;
已选择= dt <<选择行(出去) ;
已选择<<标记( “*” ) ;
已选择<<清除选择;
) ;
// 看看它是什么样子
分配(
连续分布(柱子( :高度) ,显示百分比( 1 ) ,自定义汇总统计数据(和( 1 ) ) ) ,
连续分布(柱子( :重量) ,显示百分比( 1 ) ,自定义汇总统计数据(和( 1 ) ) ) ,
发送至报告(
派遣( { “分布” , “高度” } , “分布直方图” ,框架盒, {调度段(历史段( 1 ) ,直方图颜色( 53 ) )} ) ,
派遣( { “分布” , “重量” } , “分布直方图” ,框架盒, {调度段(历史段( 1 ) ,直方图颜色( 53 ) )} )
)
) ;
回复:如何从日期值中提取单词中的月份以及如何更改异常值的默认标记?取得了以下成果:

通过将以下公式应用于“月份”列:

关于第二个问题,即为异常值分配特定标记。问题在于,标记作为行状态分配给行,而不是分配给列内的单元格。因此,人们没有能力对每一列进行异常值标记的全局分配。