안녕하세요,
저는 현재 제가 하고 있는 작업에 매우 유용한 스크립트가 있는 2015년의 토론(제목: "sumif")을 찾았습니다. 거기에 제 질문을 적었는데, 그 토론에 참여한 사람들이 제 질문을 볼 수 있는지 모르겠습니다.
제가 찾은 이 스크립트는 (약간 수정해서) 각 행의 열에서 값이 "0/0"(또는 그 이상)인 열을 세는 데 매우 효과적입니다.
dt << New Column("Sum",
Numeric, Formula(
Local({i = 0, n = N Col(Current Data Table()) - 1},
Sum(Repeat({i++ ; (Column(i)[] =="0/0")}, n))
)
)
);하지만 "some_character"를 포함하는 열을 계산하도록 이 스크립트를 어떻게 편집할 수 있을까요?
마지막 열인 "합계"에 수식을 넣고 결과 숫자를 구하는 데이터 테이블을 첨부했습니다.
저는 대용량 데이터 테이블을 가지고 있으며 각 행의 열을 특정 값(문자로)으로 계산하는 스크립트를 갖고 싶습니다.
위의 스크립트를 수정하려고 했지만 작동하지 않습니다.
dt << New Column("Miss",
Numeric, Formula(
Local({i = 0, n = N Col(Current Data Table()) - 1},
Sum(Repeat({i++ ; (Contains(Column(i)[],"."))}, n))
)
)
);</CODE>Please, help</P><P>발렌티나</P></LINGO-BODY><LINGO-LABS id="lingo-labs-737490" slang="en-US" mode="CREATE"><LINGO-LABEL>자동화 및 스크립팅</LINGO-LABEL></LINGO-LABS><LINGO-SUB id="lingo-sub-737586" slang="en-US" mode="CREATE">Re: sumif: 문자가 포함된 경우 열 계산</LINGO-SUB><LINGO-BODY id="lingo-body-737586" slang="en-US" mode="CREATE"><P>첨부하신 원본 데이터 테이블은 4개의 열로 구성되어 있으므로 이와 같지 않습니다.(합계 열은 무시할 수 없습니다.)</P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jthi_0-1711103084651.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="jthi_0-1711103084651.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/62510iAAF3B35AD80E493A/jthi_0-1711103084651.png" role="button" title="jthi_0-1711103084651.png" alt="jthi_0-1711103084651.png" /></span></SPAN></P>
<P>귀하의 데이터에 따라 내가 수식을 사용한다면 다음과 같이 할 것입니다. (아마도 나는 이를 피하고 순수 스크립트 솔루션을 사용할 것입니다.)</P>
<PRE><CODE class=" language-jsl">Names Default To Here(1);
dt = Open("$DOWNLOADS/sum_help_data.jmp");
dt << Delete Column("Sum");
dt << New Column("Miss", Numeric, Continuous, Formula(
As Constant(
cols_of_interest = Filter Each({colname}, Current Data Table() << Get Column Names("String"),
!IsMissing(Regex(colname, "S\d"));
);
);
Local({
res = 0;
},
For Each({colname}, cols_of_interest,
res = res + (Contains(Column(colname)[], ".") > 0);
);
res;
);
));
네, 모든 데이터는 동일한 유형이어야 하는 것 같습니다.
감사합니다. 잘 작동합니다!
내 게시물에 작은 데이터 테이블을 첨부했습니다. 3개의 행과 3개의 열이 있으며 헤더가 있습니다.
시즌1 시즌2 시즌3
0/0./. 0/0
./. ./. ./.
0/0 0/0 0/0
이 샘플 테이블에서는 스크립트가 작동하지 않습니다.
열 합계 수식 중단됨
'Contains'에 대한 액세스 또는 평가에서 행 1의 인수 유형이 잘못되었습니다. 잘못된 인수(열( i )[]), Contains/*###*/(열( i )[], ".")
수식 평가 오류가 무시되었습니다.
아마도 루프가 문자 열이 아닌 열에 도달했을 것입니다. 이 부분은 아마도 약간의 수정이 필요할 것입니다.
n = N Col(Current Data Table()) - 1
데이터에 대한 지식이 없이는 어떻게 해야 할지 아는 것은 매우 어렵습니다. -1에 대한 간단한 수정일 수도 있고, 문자 열 목록을 가져오거나 어떤 종류의 패턴으로 어떤 열을 통과해야 할지 계산하는 것일 수도 있습니다.
이것은 내 기록에서 발췌한 것입니다:
열 합계 수식이 중단됨
'Contains'에 대한 액세스 또는 평가에서 행 421001의 인수 유형이 잘못되었습니다. 잘못된 인수(열( i )[]), Contains/*###*/(열( i )[], ".")
수식 평가 오류가 무시되었습니다.
죄송합니다만, 질문을 이해할 수 없습니다.
저는 ~500,000개의 행과 ~3,000개의 열이 있는 테이블을 가지고 있습니다. 점이 포함된 열에 대한 합계를 계산해야 합니다. 공식을 사용할 수 없습니다.
나는 스크립트를 원해요. 효과가 있는 스크립트라면 무엇이든요. 나는 다양한 접근법을 시도했지만 아무것도 효과가 없었어요.