카테고리 없음

중복 제거 #1: duplicated

시키테이 2022. 7. 29. 09:45
반응형

R에서 중복된 값을 찾으려 할 때 같이 많이 쓰이는 함수가 duplicatedunique입니다. duplicated는 말 그대로 중복된 값이 잇는지를 찾아주는 것이고 unique는 고유한 값을 뽑아내주는 함수입니다. R에서 iris라는 공용 데이터를 가져와서 duplicated라는 함수를 한 번 써보죠. 쳐보니 모두 다 다른 값을 같는 듯하네요. 

duplicated(iris)

 

그런데 위 값은 iris라는 모든 칼럼의 값이 일치하는 경우는 없다는 얘기이기 개별 칼럼 값이 같은 값이 없다는 얘기는 아닙니다. 예를 들어 iris 데이터 중에서도 Sepal.Width라는 칼럼이 동일한 값이 나오는 경우가 있는지를 보라고 치면 다음과 같이 나옵니다. 

duplicated(iris$Sepal.Width)

어떤 칼럼은 단 하나의 고유한 값을 갖고 있지만 다른 칼럼은 중복된 값을 갖고 있다는 것을 알 수가 있네요. 그리고 여기서 한 발 더 나아가서 iris라는 데이터프레임 중에 Sepal.Width라는 칼럼 값이 고유한 값 (다른 칼럼과는 다른 값을 갖고 있는 경우)인 경우에만 그 데이터를 추출하라고 하면 다음과 같이 쓸 수 있겠네요. 

mydata<-iris[!duplicated(iris$Sepal.Width), ]
mydata

duplicated는 행이 아니라 열의 조건이기 때문에 ("같은 열 값을 갖는 경우를 찾아라") [ ] 안에 앞 부분에 적어주고, 그 앞에 !를 붙이면 "중복값이 아닌 값을 찾아라"는 조건으로 변경되죠. 쉼표 이후 빈칸을 두면 모든 칼럼을 다 갖고 오라는 뜻이 됩니다. 그래서 결과는 아래와 같이. 아래에서 보는 것처럼 Sepal.Width 값이 제각각 다 다른 값을 갖는 것을 볼 수 있습니다. 

그런데 duplicated함수가 중요하긴 한데, 조금 더 큰 데이터를 갖고 일괄적으로 어떤 칼럼에 중복치가 나오면 없애라 뭐 이런 명령문을 줄 때는 조금 불편할 때가 있습니다. 이 때는 distinct라는 함수를 통해서 해결하면 됩니다. 이 부분은 나중에 설명. 

반응형