집합 union(합집합), intersect(교집합), setdiff(차집합) 계산

  R에서 vector union(합집합), intersect(교집합), setdiff(차집합)은 실무에서는 데이터 기준을 세우고 돌릴때,  사용이 많이 된다.   벡터를 추가 하거나,  필요한 것만 불러 올 경우에는 집합 계산을 할 수 있다. 


 집합 union(합집합), intersect(교집합), setdiff(차집합) 계산

집합 연산을 위한 주요 함수는 3개가 있습니다. 두집합에 대한 예제를 통한 연산 원칙을 이해해봅시다.

setA <- c("a", "b", "c", "d", "e")
setB <- c("d", "e", "f", "g")

다음은 두 집합이 공통으로 갖고 있는 값과 아닌 값이 무엇인지에 알아봅시다. 합집합 연산은 두 집합이 갖고 있는 것을 모두 합한 것이지마 두 집합에 공통으로 존재하는 것은 한번만 계산 됩니다.

union(setA, setB)
## [1] "a" "b" "c" "d" "e" "f" "g"

교집합 연산은 공통으로 갖고 있는 요소를 계산한 결과 입니다.

intersect(setA, setB)
## [1] "d" "e"

그러나 2개의 집합 간의 차이 연산은 순서에 의존합니다. 첩 번째 명명된 집합에 있는 요소가 두번째 명명된 집합에는 없는 요소가 됩니다. 따라서 setdiff(A,B)와 setdiff(B,A)의 결과는 서로 다릅니다. 예를들면 다음과 같습니다.

setdiff(setA, setB)
## [1] "a" "b" "c"
setdiff(setB, setA)
## [1] "f" "g"

따라서 setdiff(setA, setB)결과와 insersect(setA, setB)결과에 setdiff(setB, setA)결과를 합하면 두 집합에 대한 합집합은 union 연산과 같다.

all(c(setdiff(setA,setB),intersect(setA,setB), setdiff(setB,setA)) == union(setA,setB))
## [1] TRUE

집합에 대한 비교는 %in%를 사용해 좌측집합의 요소가 우측집합에 존재하는지 여부를 계산 한 논리 벡터를 계산할 수 있다.

setA %in% setB
## [1] FALSE FALSE FALSE  TRUE  TRUE
setB %in% setA
## [1]  TRUE  TRUE FALSE FALSE

댓글 없음:

댓글 쓰기

공무 스케줄 AI Agem에 대한 생각

     지금 상황이 아비 규환이다.  어느 부서든 회사가 인수 합병되고 나서  투자를 기획하는 경영기획이 특히 않이 정신이 없고, 우리부서도 전부 미국 필리 조선소로 인원이 나가 있어,  사실상 10년 이상 고기량자는 거의 없다.   우리부서에 남아...