如何从日期值中提取单词中的月份以及如何更改异常值的默认标记?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />嗨,大家好。
1.)如何从整个列的日期值中提取单词中的月份?
假设单元格#1的日期为“ 2009/03/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 ) ,
新栏目 ( “日期” ,
数字 ,
“连续” ,
格式 ( “M / d / y” 的 , 12 ) ,
输入格式 ( “M / d / y” 的 ) ,
式 ( 今天 () )
) ,
新栏目 ( “月” ,
数字 ,
“连续” ,
格式 ( “最好” , 12 ) ,
式 ( 月 ( : 日期 ) ) ,
价值标签 (
{ 1 = “一月” , 2 = “二月” , 3 = “游行” , 4 = “四月” ,五 = “可以” , 6
= “六月” , 7 = “七月” , 8 = “八月” , 9 = “九月” , 10 = “十月” , 11
= “十一月” , 12 = “十二月” }
) ,
使用价值标签 ( 1 )
)
)
回复:如何从日期值中提取单词中的月份以及如何更改异常值的默认标记?很酷的剧本,罗恩 !
我已经通过X,分布和图形生成器在Fit Y上尝试了它,它就像一个魅力*
非常感谢并钦佩您在JMP,Ron和Jim的专业知识。
回复:如何从日期值中提取单词中的月份以及如何更改异常值的默认标记?非常感激,吉姆 !
我即将放弃,只关注Substring()或Left()。
您的解决方案完美无缺
- 兰迪
回复:如何从日期值中提取单词中的月份以及如何更改异常值的默认标记?另一种不推荐的方法是通过更改图表中选定行的首选项来执行所需操作。我不建议使用选择,因为一些其他命令将默认使用选择而不是表中的所有行。但你仍然可以尝试这个:
名称默认为此处 ( 1 ) ;
//警告:更改首选项将
//影响JMP的默认行为。
喜好 ( 标记选择模式 ( 1 ) ) ; //你也可以从文件>>首选项菜单中执行此操作,只需要执行一次。
DT = 打开 ( “$ SAMPLE_DATA / Big Class.jmp” ) ;
//获取列列表
COLS = DT << 获取列名称 ( 连续 ) ; //列出所有数字列
对于 ( 一世 = 1 ,一世 <= N项 ( COLS ) ,一世 ++,
出 = EVAL (
解析 (
“dt <<获取行所在(
DT:” || 烧焦 ( COLS [ 一世 ] ) || “> Col Quantile(dt:” || 烧焦 ( COLS [ 一世 ] ) || “,0.75)+ 1.5 *(Col分位数(dt:”) ||
烧焦 ( COLS [ 一世 ] ) || “,0.75) - Col Quantile(dt:” || 烧焦 ( COLS [ 一世 ] ) || “,0.25))| dt:” || 烧焦 ( COLS [ 一世 ] ) || “<
Col Quantile(dt:“
|| 烧焦 ( COLS [ 一世 ] ) || “,0.25) - 1.5 *(Col分位数(dt:” || 烧焦 ( COLS [ 一世 ] ) || “,0.75) - Col Quantile(dt:” || 烧焦 ( COLS [ 一世 ] ) ||
“,0.25)));”
)
) `;
选 = DT << 选择行 ( 出 ) ;
选 << 标记 ( 17 ) ;
//选择<<标记大小(5); //没有这样的选择
) ;
//看看它的样子
新窗户 ( “输出” ,
h列表框 (
分配 (
持续分配 ( 柱 ( : 高度 ) ,显示百分比 ( 1 ) ,自定义摘要统计信息 ( 和 ( 1 ) ) ) ,
持续分配 ( 柱 ( : 重量 ) ,显示百分比 ( 1 ) ,自定义摘要统计信息 ( 和 ( 1 ) ) ) ,
SendToReport (
调度 ( { “分布” , “高度” } , “分布直方图” , FrameBox , { DispatchSeg ( 历史分段 ( 1 ) ,直方图颜色 ( 53 ) )} ) ,
调度 ( { “分布” , “重量” } , “分布直方图” , FrameBox , { DispatchSeg ( 历史分段 ( 1 ) ,直方图颜色 ( 53 ) )} )
)
) ,
二元 ( ÿ ( : 高度 ) , X ( : 重量 ) )
)
) ;
回复:如何从日期值中提取单词中的月份以及如何更改异常值的默认标记?嗨 rabelardo ,
txnelson 两个主题都是正确的。但是,如果您想为单变量异常值(暴力样式)设置标记,您可以尝试以下方法。
在任何列中作为异常值的任何行现在都具有特殊标记,这可能是一个优点(或缺点)。您可以修改此项以在分析时标记特定列中的异常值。
祝好运!
罗恩
名称默认为此处 ( 1 ) ;
DT = 打开 ( “$ SAMPLE_DATA / Big Class.jmp” ) ;
//获取列列表
COLS = DT << 获取列名称 ( 连续 ) ; //列出所有数字列
对于 ( 一世 = 1 ,一世 <= N项 ( COLS ) ,一世 ++,
出 = EVAL (
解析 (
“dt <<获取行所在(
DT:” || 烧焦 ( COLS [ 一世 ] ) || “> Col Quantile(dt:” || 烧焦 ( COLS [ 一世 ] ) || “,0.75)+ 1.5 *(Col分位数(dt:”) ||
烧焦 ( COLS [ 一世 ] ) || “,0.75) - Col Quantile(dt:” || 烧焦 ( COLS [ 一世 ] ) || “,0.25))| dt:” || 烧焦 ( COLS [ 一世 ] ) || “<
Col Quantile(dt:“
|| 烧焦 ( COLS [ 一世 ] ) || “,0.25) - 1.5 *(Col分位数(dt:” || 烧焦 ( COLS [ 一世 ] ) || “,0.75) - Col Quantile(dt:” || 烧焦 ( COLS [ 一世 ] ) ||
“,0.25)));”
)
)` ;
选 = DT << 选择行 ( 出 ) ;
选 << 标记 ( “*” ) ;
选 << 明确选择 ;
) ;
//看看它的样子
分配 (
持续分配 ( 柱 ( : 高度 ) ,显示百分比 ( 1 ) ,自定义摘要统计信息 ( 和 ( 1 ) ) ) ,
持续分配 ( 柱 ( : 重量 ) ,显示百分比 ( 1 ) ,自定义摘要统计信息 ( 和 ( 1 ) ) ) ,
SendToReport (
调度 ( { “分布” , “高度” } , “分布直方图” , FrameBox , { DispatchSeg ( 历史分段 ( 1 ) ,直方图颜色 ( 53 ) )} ) ,
调度 ( { “分布” , “重量” } , “分布直方图” , FrameBox , { DispatchSeg ( 历史分段 ( 1 ) ,直方图颜色 ( 53 ) )} )
)
) ;
回复:如何从日期值中提取单词中的月份以及如何更改异常值的默认标记?取得了以下成果:

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

关于你关于为异常值分配特定标记的第二个问题。 问题在于,标记被指定为行的行状态,而不是列中的单元格。 因此,人们无法为每列进行异常值标记的全局分配。