값 선택 및 새 열로 복사여기요,
자동화를 시도하고 있습니다(상당히 쉬울 것 같습니다). 값 선택, 열 생성 및 복사/붙여넣기 그러나 올바른 스크립트 컴파일을 찾을 수 없습니다.
1) 생성해야 합니다. 3개의 새 열 하나에서 다른 값 선택 추가 동일한 소스 열 3개의 새 열 각각에 추가하고 부분 집합 각 선택의 모든 열이 채워지면 .
2) 하위 집합의 이름은 원본 소스 파일의 헤더와 새 부록에 해당해야 합니다.
주의:
열의 위치와 행의 양은 내가 가지고 있는 데이터 파일마다 다르지만 이름은 모두 동일합니다.
나는 물론 정확하지 않은 이 두 스크립트를 시도했지만 제대로 작동하도록 정확히 무엇을 변경해야 할지 모르겠습니다. 어떤 제안?
버전 1:
Names Default To Here( 1 );
dt = Current Data Table();
//Select values to copy into new column
vals 1 = Select Where (:p-value (two-sided test)2 <= 0,09); //it seems that the "2" in the column name is confusing, but unfortunately, it would take a long time to go through all tables and change the column name
// Put these in a new column 1
dt = NewColumn("sign_0,09", Numeric, Continuous, Values(vals1));
Wait( 5 );
//Column 2
vals 2 = Select Where (:p-value (two-sided test)2 <= 0,05);
dt<<GET selected="" rows="" dt="NewColumn("sign_0,05"," numeric=""></GET>
버전 2:
Names Default To Here( 1 );
dt = Current Data Table();
dt << :p-value (two-sided test)2 = [1,?]; //the end row varies and must be found automatically
results << New Column("sign_0,09", Numerical, Continuous);
For( i = 1, i <= NItems( "p-value (two-sided test)2"), i++,
results << Select Where (:p-value (two-sided test)2 <= 0,09) );
selRows = results << getSelectedRows;
AsColumn( results, "sign_0,09" )[selRows] = "p-value (two-sided test)2"[i];
//same process for 2 other new columns
dt<<SUBSET dt=""><< Select where :sign_0,09 != "";
dt<< Get selected rows
//the new name should be automatically given, too, is that possible?
dt << Subset( Output Table( "name as in original file plus _0,09 at the end" ), Selected Rows( 1 ), selected columns( 0 ) );
//same process for other 2 columns</SUBSET>
지금까지 스레드에서 새 데이터 테이블에 대한 복사/붙여넣기가 종종 있지만 새 열에 "절대" 없는 솔루션을 찾게 되어 매우 기쁩니다. 대부분 문자열 선택과 관련이 있는 것 같습니다. 선택이 숫자 데이터에 대해 동일하게 작동하는지 확실하지 않습니다.
도움을 주셔서 감사합니다!
Re: 값 선택 및 새 열에 복사이봐, 내 경우에는 아무 소용이 없었기 때문에 표시 기능이 없는 정식 버전이 있습니다.
당신의 도움을 주셔서 감사합니다!
dt = Current Data Table(); // Assuming the data table is open
/* Step 1 - add 3 columns */
dt << New Column("sign_0,09",Numeric,Continuous)
<< New Column("sign_0,05",Numeric,Continuous)
<< New Column("sign_0,01",Numeric,Continuous);
// Getting the values of column of interest
ColVals = dt:Name("p-value (two-sided test) 2") << Get Values;
// Set up a dummy matrix
Dummy = J(NRows(dt),1,.);
// All Rows
AllRows = Index(1,NRows(dt),1);
/* Step 2 - Select from the column based on conditions */
/* This could also be replaced by loop */
SR1 = dt << Get Rows Where(:Name("p-value (two-sided test) 2") <= 0.09);
//do not change "." to "," as the programme uses "." for background calculation
Dummy[SR1,0] = ColVals[SR1];
dt:Name("sign_0,09") << Set Values(Dummy);
// Re-initialize dummy matrix
Dummy = J(NRows(dt),1,.);
SR2 = dt << Get Rows Where(:Name("p-value (two-sided test) 2") <= 0.05);
Dummy[SR2,0] = ColVals[SR2];
dt:Name("sign_0,05") << Set Values(Dummy);
// Re-initialize dummy matrix
Dummy = J(NRows(dt),1,.);
SR3 = dt << Get Rows Where(:Name("p-value (two-sided test) 2") <= 0.01);
Dummy[SR3,0] = ColVals[SR3];
dt:Name("sign_0,01") << Set Values(Dummy);
/* End of Step 2 */
/* Step 3 */
dt << Select Where (Name("p-value (two-sided test)2") <= 0.09);
dt << Subset( Output Table( "new_0,09" ), Selected Rows( 1 ), selected columns( 0 ) );
dt << Select Where (Name("p-value (two-sided test)2") <= 0.05);
dt << Subset( Output Table( "new_0,05" ), Selected Rows( 1 ), selected columns( 0 ) );
dt << Select Where (Name("p-value (two-sided test)2") <= 0.01);
dt << Subset( Output Table( "new_0,01" ), Selected Rows( 1 ), selected columns( 0 ) );
/* End of Step 3 */
Re: 값 선택 및 새 열에 복사이봐, 내 경우에는 아무 소용이 없었기 때문에 표시 기능이 없는 정식 버전이 있습니다.
도와주셔서 감사합니다!
dt = Current Data Table(); // Assuming the data table is open
/* Step 1 - add 3 columns */
dt << New Column("sign_0,09",Numeric,Continuous)
<< New Column("sign_0,05",Numeric,Continuous)
<< New Column("sign_0,01",Numeric,Continuous);
// Getting the values of column of interest
ColVals = dt:Name("p-value (two-sided test) 2") << Get Values;
// Set up a dummy matrix
Dummy = J(NRows(dt),1,.);
// All Rows
AllRows = Index(1,NRows(dt),1);
/* Step 2 - Select from the column based on conditions */
/* This could also be replaced by loop */
SR1 = dt << Get Rows Where(:Name("p-value (two-sided test) 2") <= 0.09);
//do not change "." to "," as the programme uses "." for background calculation
Dummy[SR1,0] = ColVals[SR1];
dt:Name("sign_0,09") << Set Values(Dummy);
// Re-initialize dummy matrix
Dummy = J(NRows(dt),1,.);
SR2 = dt << Get Rows Where(:Name("p-value (two-sided test) 2") <= 0.05);
Dummy[SR2,0] = ColVals[SR2];
dt:Name("sign_0,05") << Set Values(Dummy);
// Re-initialize dummy matrix
Dummy = J(NRows(dt),1,.);
SR3 = dt << Get Rows Where(:Name("p-value (two-sided test) 2") <= 0.01);
Dummy[SR3,0] = ColVals[SR3];
dt:Name("sign_0,01") << Set Values(Dummy);
/* End of Step 2 */
/* Step 3 */
dt << Select Where (Name("p-value (two-sided test)2") <= 0.09);
dt << Subset( Output Table( "new_0,09" ), Selected Rows( 1 ), selected columns( 0 ) );
dt << Select Where (Name("p-value (two-sided test)2") <= 0.05);
dt << Subset( Output Table( "new_0,05" ), Selected Rows( 1 ), selected columns( 0 ) );
dt << Select Where (Name("p-value (two-sided test)2") <= 0.01);
dt << Subset( Output Table( "new_0,01" ), Selected Rows( 1 ), selected columns( 0 ) );
/* End of Step 3 */
Re: 값 선택 및 새 열에 복사@제프_퍼킨슨
고마워, 제프,
너무 늦게 귀하의 게시물을 읽었습니다. 방금 제안한 선택 항목에 하위 집합 생성 부분을 추가했으며 자동 이름 생성과는 별도로 완벽하게 작동합니다. 제안해 주셔서 감사합니다.
dt = Current Data Table();
dt << New Column( "sign_0,09",
Numeric,
"Nominal",
Format( "Best", 9 ),
Formula(
If( :Name( "p-value (two-sided test) 2" ) <= 0.09,
:Name( "p-value (two-sided test) 2" )
)
)
);
dt << New Column( "sign_0,05",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If( :Name( "p-value (two-sided test) 2" ) <= 0.05,
:Name( "p-value (two-sided test) 2" )
)
)
);
dt << New Column( "sign_0,01",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If( :Name( "p-value (two-sided test) 2" ) <= 0.01,
:Name( "p-value (two-sided test) 2" )
)
)
);
/* Step 3 */
// We already have the rows that meet the conditions
dt << Select Where (Name("p-value (two-sided test)2") <= 0.09);
dt << Subset( Output Table( "new_0,09" ), Selected Rows( 1 ), selected columns( 0 ) );
dt << Select Where (Name("p-value (two-sided test)2") <= 0.05);
dt << Subset( Output Table( "new_0,05" ), Selected Rows( 1 ), selected columns( 0 ) );
dt << Select Where (Name("p-value (two-sided test)2") <= 0.01);
dt << Subset( Output Table( "new_0,01" ), Selected Rows( 1 ), selected columns( 0 ) );
/* End of Step 3 */ Re: 값 선택 및 새 열에 복사Re: 값 선택 및 새 열에 복사@uday_guntupalli
내 데이터(귀하의 버전 및 제안 교환)로 스크립트를 실행했습니다. @Mark_Bailey ) 열을 만들고 선택한 데이터를 새 열로 가져오는 작업을 수행합니다.
그러나 선택한 행을 표시하는 마지막 부분(아래 참조)이 작동하지 않습니다. Select Where 및 Create Subset으로 조정했습니다.
/* Step 3 */
// We already have the rows that meet the conditions
Show(SR1);
Show(SR2);
Show(SR3);
/* End of Step 3 */
/* Step 3 */
dt << Select Where (Name("p-value (two-sided test)2") <= 0.09);
dt << Subset( Output Table( "new_0,09" ), Selected Rows( 1 ), selected columns( 0 ) );
dt << Select Where (Name("p-value (two-sided test)2") <= 0.05);
dt << Subset( Output Table( "new_0,05" ), Selected Rows( 1 ), selected columns( 0 ) );
dt << Select Where (Name("p-value (two-sided test)2") <= 0.01);
dt << Subset( Output Table( "new_0,01" ), Selected Rows( 1 ), selected columns( 0 ) );
/* End of Step 3 */
Re: 값 선택 및 새 열에 복사자세한 내용을 게시해 주셔서 감사합니다. 도움이 됩니다.새 열을 만들고 JSL을 통해 모든 값으로 채우는 대신 수식을 사용하여 세 개의 새 수식 기반 열을 만듭니다.
If( :Name( "p-value (two-sided test) 2" ) <= 0.09,
:Name( "p-value (two-sided test) 2" )
)

dt = Open( "seas_ratio_1_monthly.jmp" );
dt << New Column( "sign_0.09",
Numeric,
"Nominal",
Format( "Best", 9 ),
Formula(
If( :Name( "p-value (two-sided test) 2" ) <= 0.09,
:Name( "p-value (two-sided test) 2" )
)
)
);
dt << New Column( "sign_0.05",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If( :Name( "p-value (two-sided test) 2" ) <= 0.05,
:Name( "p-value (two-sided test) 2" )
)
)
);
dt << New Column( "sign_0.01",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If( :Name( "p-value (two-sided test) 2" ) <= 0.01,
:Name( "p-value (two-sided test) 2" )
)
)
);
그러나 특정 수준에서 중요한 행만 있는 데이터 테이블의 값이 무엇인지 아직 확실하지 않다는 점을 인정해야 합니다. 그 테이블을 어떻게 사용할 건가요? 3개의 유의성 지표 열(예: sign_0,09, sign_0,05, sign_0,01)이 모두 필요합니까? 그렇지 않은 경우 해당 열을 모두 함께 생성하지 않고 각 수준보다 작은 행의 하위 집합을 만들 수 있습니다. 당신의 궁극적인 목표와 당신이 설명하는 것과 같은 데이터 테이블을 원하는 이유에 대해 더 자세히 말씀해 주시겠습니까? 우리는 더 쉬운 방법을 제공할 수 있습니다.
Re: 값 선택 및 새 열에 복사나는 이 접근법을 보았지만 선택된 행 상태를 변경하는 더 간단한 방법이 있습니다. 대신:
SR1 = dt << Select Where(:Name("p-value (two-sided test) 2") <= 0.09) << Get Selected Rows; <BR />// You can edit this to conform to european convention of 0,09
dt << Clear Select;
다음을 사용할 수 있습니다.
SR1 = dt << Get Rows Where(:Name("p-value (two-sided test) 2") <= 0.09)
// You can edit this to conform to european convention of 0,09
이렇게 하면 현재 행 선택을 방해하지 않습니다.
Re: 값 선택 및 새 열에 복사멋지네요. 최대한 빨리 테스트하겠습니다.
3개의 새 열 내에서 공통 요소를 참조하는 경우 각 열에 추가될 선택된 값에 관한 경우에만 해당됩니다!
예를 들어 값 <= 0,01의 선택은 0,05 및 0,09가 있는 열에도 나타나고 <= 0,05는 0,09에도 나타납니다.
쉽게 한:
A = [ 0,01 , 0,05 ,0,09]
B = [ 0,01 , 0,05 ]
씨 = [ 0,01 ]
그러나 "모든 두 번째 행은 세 행 모두에서 동일합니다" 구조와 같은 다른 패턴이나 종류는 없습니다.
따라서, 예, 아마도 행렬로 작업하고 전체 프로세스를 더 매끄럽게 만드는 방법이 있을 것입니다.
A <SPAN class="token operator">=</SPAN> <SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">,</SPAN><SPAN class="token number">2</SPAN><SPAN class="token punctuation">,</SPAN><SPAN class="token number">3</SPAN><SPAN class="token punctuation">,</SPAN><SPAN class="token number">4</SPAN><SPAN class="token punctuation">,</SPAN><SPAN class="token number">5</SPAN><SPAN class="token punctuation">,</SPAN><SPAN class="token number">6</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">;</SPAN>
B <SPAN class="token operator">=</SPAN> <SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">,</SPAN><SPAN class="token number">2</SPAN><SPAN class="token punctuation">,</SPAN><SPAN class="token number">3</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">;</SPAN>
C <SPAN class="token operator">=</SPAN> <SPAN class="token punctuation">[</SPAN><SPAN class="token number">3</SPAN><SPAN class="token punctuation">,</SPAN><SPAN class="token number">5</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">;</SPAN>
Re: 값 선택 및 새 열에 복사@파코 ,
자, 이렇게 하면 90% 정도 도달할 수 있습니다.
dt = Current Data Table(); // Assuming the data table is open
/* Step 1 - add 3 columns */
dt << New Column("sign_0,09",Numeric,Continuous)
<< New Column("sign_0,05",Numeric,Continuous)
<< New Column("sign_0,01",Numeric,Continuous);
// Getting the values of column of interest
ColVals = dt:Name("p-value (two-sided test) 2") << Get Values;
// Set up a dummy matrix
Dummy = J(NRows(dt),1,.);
// All Rows
AllRows = Index(1,NRows(dt),1);
/* Step 2 - Select from the column based on conditions */
/* This could also be replaced by loop */
SR1 = dt << Select Where(:Name("p-value (two-sided test) 2") <= 0.09) << Get Selected Rows; // You can edit this to conform to european convention of 0,09
dt << Clear Select;
Dummy[SR1,0] = ColVals[SR1];
dt:Name("sign_0,09") << Set Values(Dummy);
// Re-initialize dummy matrix
Dummy = J(NRows(dt),1,.);
SR2 = dt << Select Where(:Name("p-value (two-sided test) 2") <= 0.05) << Get Selected Rows; // You can edit this to conform to european convention of 0,05
dt << Clear Select;
Dummy[SR2,0] = ColVals[SR2];
dt:Name("sign_0,05") << Set Values(Dummy);
// Re-initialize dummy matrix
Dummy = J(NRows(dt),1,.);
SR3 = dt << Select Where(:Name("p-value (two-sided test) 2") <= 0.01) << Get Selected Rows; // You can edit this to conform to european convention of 0,01
dt << Clear Select;
Dummy[SR3,0] = ColVals[SR3];
dt:Name("sign_0,01") << Set Values(Dummy);
/* End of Step 2 */
/* Step 3 */
// We already have the rows that meet the conditions
Show(SR1);
Show(SR2);
Show(SR3);
/* End of Step 3 */ <BR />@제프_퍼킨슨 ,
행렬 간의 공통 요소를 쉽게 찾을 수 있는 방법이 있습니까? 어쩌면 Design()이 도움이 될 수 있지만 예를 제공할 수 있습니까?
A = [1,2,3,4,5,6];
B = [1,2,3];
C = [3,5];
// The common element would be 3
연관 배열과 교차 기능을 사용할 수 있다는 것을 알고 있지만 행렬이 공통/비공통 요소를 쉽게 결정할 수 있는 방법이 있어서는 안 됩니다.
Re: 값 선택 및 새 열에 복사안녕 제프,
봐주셔서 감사합니다.
위 답글에 파일 첨부했습니다! 그들이 내 질문을 명확히 해주기를 바랍니다.
Re: 값 선택 및 새 열에 복사Re: 값 선택 및 새 열에 복사여기요,
입력해 주셔서 대단히 감사합니다. 이것은 이미 알고 있으면 매우 유용합니다.
스크립트를 잘못 복사해서 죄송합니다. 다음에 참고하겠습니다.
내가 하려는 일을 더 명확하게 하기 위해 결과가 어떻게 보여야 하는지에 대한 단계별 개요를 첨부합니다. 가이드가 더 명확하게 설명하기를 바랍니다.
jmp 형식의 예제도 첨부합니다.
도와 주셔서 감사합니다!
Re: 값 선택 및 새 열에 복사하려는 작업에 대한 설명을 읽었지만 구체적인 예가 없으면 이해하기가 어렵습니다. 또한 JSL이 원하는 작업을 수행하지 않기 때문에 JSL을 사용하여 도움이 되는 방법을 추측하기가 어렵습니다.
가능한 한 문제의 데이터 테이블의 스크린 샷과 끝내고 싶은 것에 대해 정확히 무엇을 하려는지에 대한 자세한 내용을 게시할 수 있습니까? 커뮤니티에서 더 직접적으로 도움을 줄 수 있다고 생각합니다.
감사해요.
Re: 값 선택 및 새 열에 복사@파코 ,
내가 어떻게 노력하고 도울 수 있는지 보자. 먼저 코드를 붙여넣을 때 커뮤니티 구성원이 코드를 쉽게 읽을 수 있도록 "JSL" 코드 블록을 사용하여 붙여넣으십시오. 이제 우리가 처리한 후 코드를 살펴봅니다.
1. 값 1 = 위치 선택(:p-값(양면 테스트)2 <= 0,09); / /컬럼 이름의 "2"가 헷갈리는 것 같은데 아쉽게도 모든 테이블을 훑어보고 컬럼 이름을 바꾸려면 시간이 오래 걸릴 것 같습니다.
- 이와 같이 이름이 복잡하고 변경을 원하지 않는 경우에는 name()을 사용하는 것이 좋습니다. 따라서 위의 줄은 다음과 같이 다시 작성해야 합니다.
vals1 = Select Where (Name("p-value (two-sided test)2 ")<= 0,09); // I don't know if you are using European convention for the comma instead of decimal2. 이제 select where 문은 데이터 테이블에 발행되는 메시지이므로 위의 코드 줄을 다음과 같이 더 세분화해야 합니다.
vals1 = dt << Select Where (Name("p-value (two-sided test)2") <= 0,09); 친절하게 이러한 제안을 시도해 보고 샘플 데이터 세트를 제공한다면 다른 문제도 해결할 수 있습니다.