집합 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

댓글 없음:

댓글 쓰기

css cheat sheet 클래스 선택자, margin(마진), display , center 조정 간단한 구성 요소

 앞에서는 html의 간단한 sheet를 소개 하였습니다.   html은  주로 골격을 나타나는 것이라, 디자인을 하는데는 css로 하여야 합니다.  아래 코드와 같이 css 관련 하여 매우 간단하게 코딩 하겠습니다.  body 부분의 css 코딩  ...