2017-10-30 24 views
2

열 쌍에서 값을 조회하여 새 열을 만듭니다열기 조정 내가 열이 같은 A, B, 그리고 C와 OpenRefine에 테이블이

A | B | C | D ---|---|---|--- a | 1 | b | 2 b | 2 | | c | 3 | a | 1 d | 4 | c | 3 나는에 의해 열 D를 만들려면 A를 인덱스로 사용하여 C에서 값에 해당하는 B에서 값을 인출합니다. 희망이 맞는가? 나는 GREL에서 이것을하는 방법을 알아내는 것이별로 행운이 아니다.

답변

4

'교차'기능을 사용하여 프로젝트에서 값을 찾을 수 있습니다. 십자가는 일반적으로 다른 OpenRefine 프로젝트/파일에서 값을 조회하는 데 사용되지만 실제로 이미있는 동일한 프로젝트를 다시 가리키면 동일하게 작동합니다.

따라서 C에서부터,

cell.cross("Your project name","Col A") 

당신은 '행'의 배열을 다시 얻을 것이다 -와 같은 값이 열에서 여러 번 나타나는 경우 여러 행을 얻을 수있는 다음 GREL이 열 "을 기반으로 새 열을 추가합니다.

forEach(cell.cross("Your project name","Col A"),r,r.cells["Col B"].value).join("|") 

최종 결과를 저장 할 수 있도록 요구되는 문자열로 배열을 변환 할 필요가있다 '참여'(배열 :

는 같은 것을 사용하여 배열에서 값을 추출하려면

+0

감사합니다. @ owen-stephens, 이것은 내가 필요한 것입니다. 하나의 사소한 편집 :'cross (cells, "프로젝트 이름", "Col A")'이어야합니다. 두 번째 수식을 사용하여 37 자 결과가 여러 번 반복 되었기 때문에 결과를'substring (value, 0,37) '으로 정리했습니다. –

+0

좋아요. 일반적으로 배열에서 중복을 제거하려면 .unique()를 사용하는 것이 좋습니다 .- 조인() 문 앞에 삽입 할 수 있습니다. 하지만 작동하는 경우 작동합니다. –

+0

@OwenStephens 매우 똑똑한 솔루션! –