동일한 열의 조건부 수식 및 자유 텍스트다른 사람이 사용하고 나에게 제출할 데이터 테이블 템플릿을 만들고 있습니다. 경우에 따라 ColB의 데이터는 ColA의 함수이지만 이것이 사실이 아닌 조건이 있습니다. ColA가 입력되면 (수식을 사용하여) ColB를 자동으로 채우지만 ColA 항목이 미리 정의된 관계에 맞지 않는 경우 ColB에 사용자 지정 문자열을 입력할 수 있도록 허용함으로써 가능한 경우 제출자의 삶을 더 쉽게 만들고 싶습니다. . 이를 달성할 수 있는 방법이 있습니까? 내 if 문에서 "else" 조건을 비워두면 이를 가능하게 할 수 있기를 순진하게 바랐지만 틀렸습니다.
보너스: 이 모든 기능 위에 목록 검사를 사용할 수 있다면 훨씬 더 좋겠지만(여전히 ColB에 허용되는 값의 집합 목록만 있기 때문에) JMP에서 이미 추가할 수 없다는 오류가 발생했습니다. 목록 확인 위에 있는 공식(공식과 자유 텍스트가 공존할 수 없다는 점을 감안할 때 이치에 맞는 것 같습니다).
나는 단순한 테이블로 너무 많은 일을 하려고 하고 있고 이 모든 것을 해내려면 더 멋진 입력 양식이 필요할 것이라는 직감을 가지고 있습니다. 하지만 그 길을 가기 전에 확인하고 싶었습니다. 미리 감사드립니다.
Re: 같은 열에 조건부 수식과 자유 텍스트가 있습니다.아 알 겠어! "색상" 수식을 "재료 2" 열에 넣고 목록 확인이 있는 "재료(필요한 경우)" 열에 적용합니다. 훨씬 낫다! "재료(필요한 경우)" 열에 수식을 입력하려고 했습니다. 좋은 물건!
Re: 같은 열에 조건부 수식과 자유 텍스트가 있습니다.예, 다른 열의 셀을 색칠할 수 있습니다. 수식은 좀 더 복잡하며 필요할 때 색상을 추가하고 필요하지 않을 때 색상을 제거해야 합니다(이전에 추가된 경우).
Match( :Furniture Type,
"Bed",
If( Is Missing( :"Material (if needed)"n ),
:"Material (if needed)"n << color cells( "Red", {Row()} );
"PLEASE ADD VALUE IN MATERIAL COLUMN";
,
:"Material (if needed)"n << color cells( "Black", {Row()} );
:"Material (if needed)"n;
),
"Chair", "Wood",
"Sofa",
If( Is Missing( :"Material (if needed)"n ),
:"Material (if needed)"n << color cells( "Red", {Row()} );
"PLEASE ADD VALUE IN MATERIAL COLUMN";
,
:"Material (if needed)"n << color cells( "Black", {Row()} );
:"Material (if needed)"n;
),
"Table", "Metal"
)Re: 같은 열에 조건부 수식과 자유 텍스트가 있습니다.감사해요, @Peter_Hersh ! 죄송합니다. 잘 설명하려고 애썼습니다. 하지만 제프의 제안이 효과가 있을 것이라고 생각합니다. 귀하의 의견에 정말 감사드립니다!
Re: 같은 열에 조건부 수식과 자유 텍스트가 있습니다.감사해요, @제프_퍼킨슨 ! 사용자가 주어진 행에 대해 왼쪽에서 오른쪽으로 콘텐츠를 채울 때 지침이 자동으로 채워지기 때문에 이것이 적절한 구현이라고 생각합니다. 지침을 공식으로 만드는 것에 대해 생각했어야 했습니다.
"재료 2" 열의 값을 기반으로 "재료(필요한 경우)" 열의 셀에 자동으로 색상을 지정하는 것이 가능하다면 귀를 기울일 것입니다. 이것을 수식으로 구현하려고 했지만 "재료(필요한 경우)" 열에서 목록 확인을 유지할 수 없었습니다. 이렇게 하면 채워야 하는 셀에 색상 표시기를 사용하고 입력기에서 "Material 2" 열을 완전히 숨길 수 있습니다("Material 2" 출력을 볼 필요가 없기 때문).
Re: 같은 열에 조건부 수식과 자유 텍스트가 있습니다.감사해요, @DonMcCormack ! 예, 행 상태는 제가 배워야 할 목록에 포함되어 있습니다. 저를 알려주셔서 감사합니다. 조사하겠습니다.
Re: 같은 열에 조건부 수식과 자유 텍스트가 있습니다.@Matt_Converse , 내가 이것을 처리하는 방법은 사용자가 채울 수 있는 두 개의 열, 하나는 (위의 예를 사용하여) 가구 유형에 대한 것이고 다른 하나는 재료에 대한 것입니다. 그런 다음 수식 열은 알고 있는 가구 유형에 대한 조회를 사용합니다. 그렇지 않은 항목에 대한 재료 열입니다.
수식에서 재료(필요한 경우) 열이 채워졌는지 여부를 확인하고 사용자에게 채워야 함을 알릴 수 있습니다. 재료 열에서 목록 확인 속성을 사용할 수도 있습니다.

Re: 같은 열에 조건부 수식과 자유 텍스트가 있습니다.안녕 매트,
빠른 전화를 받는 것이 이치에 맞을 수도 있습니다. 나는 당신이 성취하려는 것을 완전히 이해하지 못할 수도 있습니다.언제든지 연락주세요. peter.hersh@jmp.com
이러한 모든 열 대 열 관계를 한 번에 생성하는 단일 스크립트를 쉽게 생성할 수 있습니다.이 작업을 수행해야 하는 이유가 없는 한.
Re: 같은 열에 조건부 수식과 자유 텍스트가 있습니다.@Matt_Converse 관심 있는 열을 확인하고 업데이트하는 함수와 함께 행 상태 처리기를 사용하는 방법을 살펴볼 수 있습니다. 행 상태가 변경될 때마다 행 상태 처리기가 실행되어 선택된 행과 선택되지 않은 행의 행 번호를 전달하기 때문에 약간 까다로울 수 있습니다. 함수가 특정 상황에서만 실행되도록 조건을 추가해야 할 수도 있습니다(예: 대상 열의 값이 변경된 경우). 이점은 대상 열을 확인하는 함수나 값을 사용할 필요가 없다는 것입니다. 예제는 스크립팅 인덱스 및 설명서를 참조하십시오.
Re: 같은 열에 조건부 수식과 자유 텍스트가 있습니다.감사해요, @Peter_Hersh ! 나는 recode를 사용하는 것에 대해 생각하지 않았습니다. 내 데이터 세트(및 '고객' 워크플로)가 내가 언급한 것보다 더 복잡하기 때문에 몇 가지 문제를 예상합니다.
1. 두 번째 행이 추가되기 전에 전체 데이터 행이 입력됩니다. 따라서 스크립트(간단한 재생 버튼이기는 하지만)는 모든 행에 대해 실행되어야 하며 이전에 입력한 물음표가 없는 텍스트를 덮어쓰지 않도록 몇 줄을 추가해야 합니다(가능하다고 생각합니다).
2. 이 기능을 활용하고 싶은 여러 열 간 관계(예: ColA와 ColB 간, ColC와 ColF 간 등)가 있으므로 사용자는 스크립트를 여러 번 실행해야 합니다. 주어진 행에 대한 시간과 스크립트를 재생하는 시기 등이 약간 투박해 보입니다. 또는 열(ColA, ColC, ColB 등)을 재정렬하거나 사용자에게 ColA에서 ColC로 건너뛰도록 요청하여 스크립트가 행당 한 번만 실행될 수 있도록 할 수 있지만 이러한 옵션도 그다지 사용자 친화적이지 않은 것 같습니다. .
'recode'가 최선의 해결 방법이라고 생각한다면 시도해 볼 것입니다. 입력해 주셔서 감사합니다!
Re: 같은 열에 조건부 수식과 자유 텍스트가 있습니다.@Matt_Converse Recode를 사용해 보셨습니까?귀하의 예에서 의자는 나무이고 침대는 비어 있습니다.빠른 스크립트를 실행하여 이 재코딩을 실행한 다음 목록 확인 속성을 추가할 수 있습니다.목록 확인을 통해 사용자는 목록에서 값 중 하나를 마우스 오른쪽 버튼으로 클릭하고 선택할 수 있습니다.JMP 16에서 로그를 사용하면 이러한 모든 변경 사항이 캡처되므로 스크립트를 작성할 필요가 없습니다.아래에서 시도해 보세요.
//Make Data Table
New Table( "Example 2",
Add Rows( 7 ),
New Column( "Furniture",
Character,
"Nominal",
Set Values( {"Chair", "Bed", "Chair", "Bed", "Stool", "Stool", "Bed"} )
)
);
Wait (2);
// Recode column: Material
dt = Data Table( "Example 2" );
dt << Begin Data Update;
col1 = dt << New Column( dt:Furniture );
col1 << Set Name( "Material" );
dt << Move Selected Columns( {col1}, after( dt:Furniture ) );
dt << Recode Column(
dt:Furniture,
{Map Value(
_rcOrig,
{"Bed", "?", "Chair", "Wood", "Stool", "Metal"},
Unmatched( _rcNow )
)},
Update Properties( 1 ),
Target Column( col1 )
);
dt << End Data Update;
// Clear row selection
Data Table( "Example 2" ) << Clear Select;
// Change column list check: Material
Data Table( "Example 2" ):Material << List Check( {"?", "Metal", "Wood"} );
Re: 같은 열에 조건부 수식과 자유 텍스트가 있습니다.신속한 답변에 감사드립니다, Peter. 값 레이블을 보고 조금 더 배웠습니다. 그러나 제가 놓치고 있는 것이 없다면 ColB는 여전히 궁극적으로 ColA의 기능입니다. ColB가 ColA와 일대다 관계에 있는 경우 ColB가 ColA와 독립적일 수 있는 옵션이 필요합니다.
예를 들어 ColA가 "가구 유형"이고 ColB가 "가구는 어떤 재료로 만들어졌습니까?"라고 가정합니다. 사용자가 ColA에 "Chair"를 입력하면 ColB는 자동으로 "Wood"로 채워집니다. 사용자가 가질 수 있는 유일한 의자는 나무로 만들어질 것임을 선험적으로 알고 있기 때문입니다. 그러나 ColB에 "Bed"를 입력한 경우 "Wood" 또는 "Metal" 유형이 있을 수 있으므로 ColB는 공백으로 남겨져 "Wood" 또는 "Metal"로 채울 수 있습니다. 또는 ColB가 ColA에 "Chair"를 넣으면 회색으로 표시될 수 있습니다(ColB가 무엇인지 이미 알고 있고 시간을 절약하고 오타를 피하려고 하기 때문입니다). 나는 또한 수식을 사용하여 해당 작업을 수행했습니다.
이것이 좀 더 명확하기를 바랍니다. 감사해요!
Re: 같은 열에 조건부 수식과 자유 텍스트가 있습니다.@Matt_Converse , 좋은 질문.다음은 귀하가 요청한 것과 유사한 예입니다.범위를 포함할 수 있는 값 레이블을 사용했습니다.이 값이 특정 범위에 속하면 레이블로 표시됩니다.이것은 당신이 기대하거나 적어도 부분적으로는 달성할 수 있습니다.Col A는 독립적이고 작동할 수 있는 원하는 범위를 벗어나는 경우 목록 검사를 실행할 수 있습니다.어쨌든 확인하고 궁금한 점이 있으면 알려주세요.