목록에서 값 검색안녕,
구분된 문자열로 만든 목록이 있습니다. 문자열은 다음과 같습니다: (숫자)|(이름)|(숫자)|(이름)|(숫자).... 등. 내가 한 것은 해당 문자열을 가져와서 구분 기호('|')로 구문 분석한 것입니다. 그런 다음 모든 값 목록을 가져 와서 "이름"의 새 목록을 만들고 새 열을 만들었습니다. 내가 겪은 문제는 문자열을 구문 분석하여 각 열에 배치할 때입니다. 모든 행의 모든 문자열이 동일한 값으로 시작하는 것은 아니기 때문입니다. 두 행의 데이터에서 모든 "이름"을 가져와야 했습니다. 따라서 첫 번째 행, 세 번째 행, 다섯 번째 행 등은 동일해야 하지만 문자열이 끝나는 "이름"은 다릅니다. 결과적으로 모든 두 번째, 네 번째, 여섯 번째 등의 행은 다른 "이름"으로 시작합니다(홀수 행은 중단됨). 열을 만들기 위해 얻은 이름 목록은 존재하는 모든 이름이지만 적절한 열에 모든 숫자를 배치할 수 있기를 원합니다.
모든 데이터를 구문 분석하는 데 사용한 스크립트의 일부는 다음과 같습니다.
// 모든 핀 이름 가져오기
목록 = {};
목록 = {};
목록2 = {};
// 핀 이름을 얻기 위해 :Test_Result의 첫 번째 행을 반복합니다.
list = words(column(dt4,"Test_Result")[1], "|");
list2 = words(column(dt4,"Test_Result")[2], "|");
// 문자열의 첫 번째 값은 쓸모없는 정보이므로 제거
list2 = 제거(list2,1);
one_test_result_list = concat(목록,목록2);
// 두 번째 값으로 시작하는 모든 핀 이름 가져오기
For(i = 1, i <= nitems(one_test_result_list)/2, i++,
할당(목록 , one_test_result_list[i*2]);
);
어떻게 해야할지 모르겠습니다. 문자열에서 모든 "이름" 다음의 "숫자"는 해당 이름에 해당하는 값이기 때문입니다. 따라서 해당 이름이 표시되면 해당 이름의 열에 다음 값을 배치해야 합니다.
도움을 주셔서 감사합니다!
Re: 값에 대한 목록 검색<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />미리 알려지지 않은 열 이름을 잘 처리합니다.
Re: 값에 대한 목록 검색dt = 새 테이블 ( "예" , 행 추가 ( 4 ) ,
새 열 ( "원시 데이터" , 성격 , 명사 같은 ,
값 설정 (
{ "1|얼굴|3|스팍|4|해마|5" , "1|얼굴|2|샤트너|3|스팍|5" ,
"1|얼굴|2|샤트너|3|스팍|4|해마|5" ,
"1|샤트너|3|스팍|4|해마|5" }
)
)
) ;
col_names = dt << 열 이름 가져오기 ( 끈 ) ;
~을 위한 ( 나 = 1 , 나 <= nrows ( dt ) , 나 ++,
단어 목록 = 단어 ( dt : 원시 데이터 [ 나 ] , "|" ) ;
~을 위한 ( 케이 = 2 , 케이 <= 나이트 ( 단어 목록 ) , 케이 = 케이 + 2 ,
one_col = 단어 목록 [ 케이 ] ;
one_num = 단어 목록 [ 케이 + 1 ] ;
만약에 ( ! 포함 ( col_names , one_col ) ,
dt << 새 열 ( one_col , 성격 , 명사 같은 ) ;
에 집어 넣다 ( col_names , one_col ) ;
) ;
열 ( dt , one_col )[ 나 ] = one_num ;
) ;
) ;
Re: 값에 대한 목록 검색감사합니다 크레이지! 그것이 바로 내가 찾고 있는 것입니다! 완벽하게 작동합니다!
Re: 값에 대한 목록 검색나도 올바른 질문에 대답하고 있는지 확실하지 않습니다.아마도 이것이 도움이 될 것입니다:
dt = New Table( "Untitled",New Column( "dogs"),New Column( "cats"),New Column( "mice"),New Column( "horses"));
load = function({txt},
dt << addrow(1);
list=words(txt,"|");
for(i=1,i
columnName = list; i=i+1;
columnValue = list; i=i+1;
column(dt,columnName)[] = num(columnValue);
)
);
load("mice|3|horses|7");
load("cats|3|mice|9");

라인 1은 템플릿 데이터 테이블을 만들고 가능한 모든 열 이름을 알고 있다고 가정합니다.2행은 단일 인수인 txt를 사용하는 사용자 함수를 시작합니다.3행에서 10행은 기능입니다. 표에 행을 추가하고, 텍스트에서 목록을 만들고, 한 번에 두 항목씩 목록을 살펴보고, 이름을 얻고, 값을 얻습니다.8행은 문자 이름으로 컬럼을 만들고 빈 [ ]을 사용하여 현재 행에 값을 삽입합니다.라인 11과 12는 함수에 대한 예제 호출입니다.
Re: 값에 대한 목록 검색가깝다! 데이터를 구문 분석하는 코드가 이미 있고 이름만으로 새 목록을 만듭니다. 내가 정말로 추구하는 것은 새 열을 만든 후 모든 숫자로 채워야 한다는 것입니다. 모든 이름 다음의 숫자는 해당 이름에 대한 값이므로 목록에서 이름을 검색하고 해당 열에 다음 값을 배치하려고 합니다. 다음과 같습니다.
(열이라고 가정): face | 샤트너 | 스팍 | 해마
2 | 3 | 4 | 5
나에게 첫 번째 숫자는 쓸모가 없기 때문에 그냥 무시하지만 이름 뒤에 오는 숫자는 내가 신경 쓰는 값입니다. 그러나 이러한 값 중 하나가 누락되었다고 가정합니다.
str = "1|샤트너|3|스팍|4|해마|5" ;
나는 여전히 모든 원래 열을 가지고 있지만 내 데이터 테이블의 일부 행은 중간 또는 시작 부분에서 일부 값이 누락되었을 수 있습니다. 목록을 검색하고 누락된 값을 건너뛰기를 원합니다.
(열이라고 가정): face | 샤트너 | 스팍 | 해마
| 3 | 4 | 5
이것이 얼마나 가능한지 잘 모르겠지만 모든 행이 동일한 값으로 시작하는 것은 아닙니다. 그러나 첫 번째 값을 찾은 후에는 모든 값을 가져야 합니다. 그래서 내가 정말로 필요한 것은 첫 번째 값이 속한 열을 찾은 다음 그 이후의 모든 열을 채우는 것입니다.
감사합니다!
Re: 값에 대한 목록 검색내가 당신을 이해하고 있는지 잘 모르겠지만 당신이 이것을하고 싶어하는 것 같습니까?
str = "1|'얼굴'|2|샤트너|3|스팍|4|해마" ;
목록 = 단어 ( str , "|" ) ;
N = 나이트 ( 목록 ) / 2 ;
색인 = 1 :: N ;
짝수 = 색인 * 2 ;
이름 = 목록 [ 짝수 ] ;
아니면 연관 배열이 가능할까요?