공부해 봅시다

SEARCH, ISNUMBER, IF

Anonymous Pathologist 2013. 2. 25. 22:10
병리과 논문(?)을 쓰기 위해서는 병리보고서에 적힌 내용을 통계 프로그램에서 사용할 수 있도록 값을 찾아서 지정해 주는 작업이 필요하다. 증례가 적다면 일일이 수작업으로 확인하면서 해도 되겠지만, 증례가 많아진다면 상당한 시간이 소요되기 때문에 비효율적이다.
난 이제 내가 필요한 만큼은 사용할 수 있지만, 후배 전공의 들을 위하여 팁을 남겨둔다. ;)

Step 0. Requirements

병리 보고서 혹은 그와 관련된 내용 전체를 엑셀로 출력(export) 할 수 있어야 한다.

  출력 내용 중 보고서는 하나의 CELL 에 들어가야 한다.

보고서 입력 과정에서 지나치게 오타가 많이 발생한다면 좀 곤란하다.

보고서 자체가 양식지 등을 사용하여 일정한 양식(format)으로 되어 있어야 한다.

  표현이 여러가지가 있다면 일일이 다 확인을 해서 수정해야 할 필요가 있다.


Step 1. SEARCH

찾고자 하는 단어가 해당 텍스트 내에서 1번만 언급이 되어야 한다.

2번 이상 언급이 되면서 다 확인을 해야한다면 응용을 해야 한다. 조금 귀찮다.


2바이트 문자를 인식하고 싶다면 SEARCHB 라는 함수를 이용하면 된다고 하지만, 사실 필요 없으므로 무시한다.

FIND나 FINDB 함수를 이용하면 대소문자 구별이 가능하다고 하는데 안쓰는게 편하다.


SEARCH 함수는 다음과 같이 입력을 해야한다.

SEARCH(찾을 문자, 내용이 있는 텍스트, [옵션; 2번째 항목에 해당하는 텍스트에서 몇 번째 부터 찾을 것인가])

  문자는 " " 로 묶어야 한다.


최근에 작업한 파일은 MSI 검사와 관련된 내용인데, 이를 예제로 하면

=SEARCH("unstable", A3(예시일 뿐임))

   보고서가 입력된 셀에서 몇 번째에 unstable 이라는 단어가 있는지 알려준다. 

   없다면 에러 메세지(#VALUE!)가 나옴.


Step 2. ISNUMBER

사실 몇 번째에 우리가 찾는 unstable 이 있는지는 중요하지 않으므로, 있는지 없는지를 아는 것이 더 필요하다.

unstable 이 있다면 숫자 값을 반환하게 되므로 숫자인지 오류 메세지인지만 확인하면 된다. 

이럴 때 사용할 수 있는 것이 ISNUMBER() 이다. 

괄호안에 입력된 결과에 따라서 논리값 TRUE, FALSE 를 반환한다.

unstable 이 있다면 SEARCH 함수는 숫자를 반환할 것이고, ISNUMBER는 논리값 TRUE를 반납할 것이다.


=ISNUMBER(SEARCH("unstable", A3))


Step 3. IF

=IF(비교 대상, [옵션: 참일 경우], [옵션: 거짓일 경우])

옵션인 항목 내부에 다시 IF 를 입력하여 함수를 중첩할 수 있는데 엑셀 2010 의 경우 64개까지 가능하다고 한다.

중첩된 경우에는 순서대로 비교를 하기 때문에 잘 이용하면 편하다.


=IF(ISNUMBER(SEARCH("unstable", A3))=TRUE, "Unstable", "Stable")

이렇게 하면 unstable 이라는 단어가 들어가 있으면 Unstable 이라는 결과를 보여주며, 없다면 Stable 이라는 결과를 보여준다.


Step 4. 주의사항

stable 이라는 단어를 검색한다면 SEARCH 함수는 unstable 과 stable 을 구별할 수 없다.

따라서, 어떤 단어를 검색하는지에 대해서 고려해야 한다.


IF 함수에서 거짓인 경우 특정 단어를 보여주도록 하기 보다는, 

중첩 함수를 사용하여 다시 판단하도록 하는 것이 좋다.


Step 5. 응용

어느 정도 특정 위치에서 특정 단어가 있는지 여부를 확인하려면, MID 함수를 사용하여 해당 범위에 해당하는 텍스트를 추출한 다음에 SEARCH 함수를 이용하면 된다.

'공부해 봅시다' 카테고리의 다른 글

CT colonography has finally arrived  (0) 2013.04.29
항히스타민제의 올바른 사용  (0) 2013.04.17
체계적 문헌고찰과 메타분석  (0) 2012.11.20
유전체 데이터 분석  (0) 2012.07.20
2012 Microarray analysis workshop  (0) 2012.02.15