N 개의 열 (M 매개 변수의 경우)을 JSL을 사용하는 정규식을 기반으로 매개 변수별로 고유 한 열로 결합여보세요,
숫자 데이터가있는 N 개의 열이 있고 일부 열은 주어진 행에 대해 비어 있습니다 (따라서 관심있는 매개 변수는 현명한 열에 분산되어 있습니다)
N 개의 열은 M 개의 매개 변수를 나타내며 각각의 M 개의 매개 변수를 단일 열로 결합하고자합니다.
이상적으로 JSL에서 이것을 스크립팅하는 방법에 대한 지침을 얻고 몇 가지 양식이나 정규식을 통합하여 키워드 기반의 많은 수의 열에 대해이 작업을 수행 할 수있게하고 싶습니다.
아주 기본적인 샘플 데이터 테이블 첨부.
Re : N 개의 열 (M 매개 변수의 경우)을 J를 사용하여 정규식을 기반으로 매개 변수별로 고유 한 열로 결합안녕, mpanggabean!
이것이 올바른지 알려주세요. 예를 들어 "param1"과 "domain1"및 "vdd"가 포함 된 열을 "paramx"와 "domainy"및 "zzz"를 별도의 열로 쌓으려고합니다.
얼마나 많은 열과 행이 시작하여 끝날 것으로 예상합니까?
Re : N 개의 열 (M 매개 변수의 경우)을 J를 사용하여 정규식을 기반으로 매개 변수별로 고유 한 열로 결합이러한 것들을 통해, 당신이 데이터에 대해 안전하게 추측 할 수있는 것 (그리고 할 수없는 것)에 크게 좌우됩니다. 내가 올바르게 이해했다면, 아래의 코드는 주어진 표 (및 '비슷한'표)에 적용됩니다. 그것은 일반화 될 수 있거나, 더 많은 작업을 통해 수식 열을 만들 수 있습니다 (악용하여 @ 제프 _ 퍼킨슨 위의 'Sum ()'사용).
NamesDefaultToHere(1);
dt = CurrentDataTable();
// First data column
fdc = 2;
// Number of columns in a group
nc = 2;
// Number of groups
ng = (NCol(dt) - 1) / nc;
// Loop over each group and add a 'sum' column for each
for(g=1, g <=ng, g++,
firstCol = fdc + (g-1)*nc;
lastCol = firstCol + (nc-1);
gData = dt << getAsMatrix(firstCol::lastCol);
// Replace ',' by '0' so 'VSum()' works as required
gData[loc(IsMissing(gData))] = 0;
// Get the sum of columns using 'VSum()' (need to transpose, and back again)
sumVals = Transpose(VSum(Transpose(gData)));
// Make the new column
cName = Column(dt, firstCol) << getName;
dt << NewColumn(cName||"_Sum", Numeric, Continuous, Values(sumVals));
);
Re : N 개의 열 (M 매개 변수의 경우)을 J를 사용하여 정규식을 기반으로 매개 변수별로 고유 한 열로 결합안녕하세요 제프,
예, 매개 변수 값이있는 열이 하나만 있어야합니다. 그러나 너무 많은 매개 변수 및 하위 매개 변수가 있습니다. 예를 들어, param1은 param1_domain1_vdd1, param1_also_domain1_vdd1, param1_domain1_vdd2, param1_also_domain1_vdd2, param1_domain1_vdd3, param1_also_domain1_vdd3 등을 가질 수 있습니다. 동일한 도메인 및 동일한 vdd에서 매개 변수를 통합하려는 경우에만 전체 매개 변수 수가 더 많을 수 있습니다. 따라서 나는 너무 많이 선택하고 합산하는 것을 피하고 싶다. 더 이상의 제안?
간단한 출발점에 감사드립니다!
Re : N 개의 열 (M 매개 변수의 경우)을 J를 사용하여 정규식을 기반으로 매개 변수별로 고유 한 열로 결합매개 변수 값이있는 열이 하나만 있는지 확인하려면 Sum () 함수를 사용할 수 있습니다. Sum ()은 누락 된 값을 무시하기 때문입니다. 따라서 매개 변수 값의 합계는 비 해싱 매개 변수의 값이됩니다.

Re : N 개의 열 (M 매개 변수의 경우)을 J를 사용하여 정규식을 기반으로 매개 변수별로 고유 한 열로 결합 @mpanggabean ,
다음 스크립트는 열 목록을 두 목록으로 구분하는 데 도움이됩니다. 2 개의 목록은 당신에게 말할 것입니다.
1. 매개 변수가 포함 된 열 이름은 무엇입니까?
2. 표에서 사용할 수있는 고유 한 매개 변수는 무엇입니까?
여기 또는이 기본 스크립트를 사용하여 원하는대로 데이터를 조작 할 수 있습니다.
Clear Log () ; Clear Globals();
dt = Current Data Table() ; // Getting a reference to the table . Alternatively you can open the file using Open()
ColNames = dt << Get Column Names("String"); // Acquire names of columns in table as string
ParameterColList = list(); // Intialize an empty list
ParamsList = list() ;
KeyWord = "param"; // Define Keyword all your parameters have
CommonDelim = "_";
for(i = 1 , i <= N Items(ColNames), i++,
If(!IsMissing(Regex(Char(ColNames[i]),KeyWord)),
Insert Into(ParameterColList,ColNames[i]);
If(Contains(ColNames[i],CommonDelim),
Pos = Contains(ColNames[i],CommonDelim); // Identify where the common delimiter is
Insert Into(ParamsList,Substr(ColNames[i],1,Pos-1));
);
);
);
Show(ParameterColList); // Display List
Show(ParamsList);