데이터 논쟁. 원시 데이터를 분석을 위해보다 쉽게 ​​작업 할 수있는 형식으로 변환하는 프로세스입니다. 가장 섹시하고 재미있는 작품이 아닙니다. 우리의 꿈에서 모든 데이터 세트는 완벽하게 형식화되어 모든 종류의 정교한 분석을 위해 준비되었습니다! 실생활에서는 그리 많지 않습니다. 데이터 과학자의 시간 중 75 %는 데이터 논쟁에 소비 된 것으로 추정됩니다. 효과적인 데이터 과학자가 되려면이 일에 능숙해야하며 빨리해야합니다.

가장 기본적인 데이터 논쟁 작업 중 하나는 데이터 필터링입니다. 대규모 데이터 세트에서 시작하여 일부 기준에 따라 더 작고 관리하기 쉬운 데이터 집합으로 줄입니다. 색으로 양말 서랍을 걸러 내고 검은 색 양말 만 꺼내는 것을 생각해보십시오. R에서 필터링해야 할 때마다 dplyr filter함수를 사용합니다. 프로그래밍에서 흔히 그렇듯이 R에서 필터링하는 방법은 다양합니다. 그러나이 dplyr filter기능은 내가 가장 좋아하는 방법이며, 대다수의 시간을 사용하는 방법입니다.

내가 그렇게 좋아하는 이유는, 사용자 친화적인 구문을 사용하고 작업하기 쉽고 다른 dplyr 함수와도 매우 잘 작동하기 때문입니다.

dplyr에 대한 간략한 소개

dplyr filter함수 에 대해 자세히 설명하기 전에 간단히 dplyr를 소개하여 컨텍스트를 제공하고자합니다. dplyr은 데이터 조작 기능의 응집력있는 세트로 데이터를 가능한 한 고통스럽게 만들 수 있습니다.

drier은 5 가지 기능으로 구성되어 있으며 모두 중요한 데이터 처리 목적을 제공합니다.

  • filter() 값에 따라 행을 선택합니다.
  • mutate() 새로운 변수를 만든다.
  • select() 열을 이름으로 선택합니다.
  • summarise() 요약 통계를 계산합니다.
  • arrange() 행을 정렬합니다.

dplyr의 장점은이 모든 함수의 구문이 매우 유사하며 모두 잘 작동한다는 것입니다.
이 5 가지 기능을 마스터하면 자신의 방식으로 제공되는 거의 모든 데이터 논쟁 작업을 처리 할 수 ​​있습니다. 하지만 우리는 한 번에 하나씩 다루어야합니다. 이제 dplyr을 사용하여 R에서 필터링하는 방법을 배우십시오!

데이터로드 중

이 글에서는 diamondsggplot 패키지에 내장 된 데이터 세트 인 데이터 세트를 사용하여 dplyr filter기능을 최대한 활용하는 방법을 설명합니다 . 먼저 데이터를 살펴 보겠습니다.

우리는 데이터 세트가 캐럿, 컷, 컬러, 선명도 및 가격을 포함한 개별 다이아몬드의 특성을 제공한다는 것을 알 수 있습니다.

첫 번째 dplyr 필터 작동

나는 배우는 것을 좋아합니다. 그래서 우리는 첫 번째 dplyr filter작업으로 지금 당장 다이빙을 할 것 입니다. 우리의 diamonds데이터 세트에서 다이아몬드 컷이 ‘Ideal’인 행만 필터링합니다.

보시다시피 반환 된 데이터 프레임의 모든 다이아몬드는 ‘이상적인’부분을 보여줍니다. 그것은 효과가있다! 여기에서 일어나는 일을보다 상세하게 다루 겠지만 먼저 R이 논리 연산자와 관계 연산자로 어떻게 작동하는지 간단히 살펴보고 R을 효율적으로 필터링하기 위해 이들 연산자를 어떻게 사용할 수 있는지 간단히 살펴 보겠습니다.

R 및 dplyr의 논리 및 관계 연산자에 대한 간략한 설명

dplyr에서 filter는 2 개의 인수를 취합니다.

  • 운영중인 데이터 프레임
  • TRUE또는로 평가되는 조건식FALSE

위의 예제에서 우리 diamonds는 데이터 프레임과 cut == 'Ideal'조건식으로 지정 했습니다. 조건식? 내가 무슨 소리를하는거야?
후드, dplyr filter당신의 조건식에 대해 각 행을 테스트하고 결과를 매핑하여 작동 TRUE하고 FALSE. 그런 다음 평가할 모든 행을 선택합니다 TRUE.
위의 첫 번째 예에서 다이아몬드 절단이 조건식에 이상적인지 확인했습니다 cut == 'Ideal'. 데이터 프레임의 각 행에 대해 dplyr은 열 cut이로 설정 되었는지 여부를 확인한 'Ideal'후 cut == 'Ideal'평가 된 행만 반환 했습니다 TRUE.
첫 번째 필터에서는 연산자 ==를 사용하여 동등성을 테스트했습니다. 그러나 dplyr을 사용하여 데이터 프레임을 필터링 할 수있는 유일한 방법은 아닙니다. 우리는 여러 다른 관계 연산자 를 사용하여 R에서 필터링 할 수 있습니다 .
관계 연산자 는 값을 비교하는 데 사용됩니다. R에서는 일반적으로 (그리고 특별히 dplyr에서) 다음과 같습니다.

  • == (동일)
  • != (같지 않음)
  • < (보다 작음)
  • <= (보다 작거나 같음)
  • > (보다 큰)
  • >= (크거나 같음)

이들은 당신이 익숙한 표준 수학 연산자이며, 예상대로 작동합니다. 한 가지주의 사항 : ==비교를 위해 이중 등호 ( )를 사용해야합니다 ! 규칙에 따라 하나의 equals sign ( =)을 사용하여 변수에 값을 할당하고 ==두 개의 값이 같은지 여부를 확인하기 위해 double equals sign ( )을 사용합니다. 하나의 등호를 사용하면 종종 직관적이지 않은 오류 메시지가 표시되므로이 일반적인 오류를 확인하십시오!
또한 dplyr은 다음과 같은 논리 연산자 를 사용 하여 단일 dplyr filter호출 에서 여러 조건을 함께 사용할 수 있습니다 !

  • ! (논리적 NOT)
  • & (논리 AND)
  • | (논리 OR)

dplyr을 사용하여 필터링 할 때 종종 유용 할 두 가지 연산자가 추가로 있습니다.

  • %in% (값이 여러 값의 배열에 있는지 확인)
  • is.na() (값이 NA인지 확인)

위의 첫 번째 예제에서 우리는 우리가 말했던 평등을 테스트했습니다 cut == 'Ideal'. 이제 필터에서 서로 다른 관계형 매개 변수를 사용하여 기능을 확장 해 보겠습니다.

 

여기서 우리는 가격이 2000보다 큰 다이아몬드 만 선택합니다.

그리고 여기서, 우리는 컷이 ‘Ideal’이 아닌 다이아몬드를 모두 선택합니다. 이것은 이전에 필터링 한 것과 정반대입니다.
당신이 사용할 수있는 <><=>===, 및 !=데이터를 필터링 유사한 방법으로. 다양한 필터링 옵션에 익숙해지기 위해 몇 가지 예를 직접 사용해보십시오!

결과 저장에 대한 참고 사항

기본적으로 dplyr 필터는 요청한 작업을 수행 한 다음 그 결과를 화면에 인쇄합니다. 변수에 결과를 저장하려면 다음과 같이 할당해야합니다.

diamonds필터되지 않은 데이터를 유지하지 않으려는 경우 데이터 세트를 다시 덮어 쓸 수도 있습니다 (즉, 결과를 다시 데이터 프레임에 할당 ). 이 경우에는 보관하고 싶기 때문에이 결과를 저장합니다 e_diamondsdplyr filter어쨌든 데이터를 덮어 쓰기 전에 결과 를 미리 보는 것이 좋습니다 .

숫자 변수 필터링

숫자 변수는 데이터 집합의 양적 변수입니다. 다이아몬드 데이터 세트에는 캐럿과 가격 변수가 포함됩니다. 숫자 변수로 작업 할 때 값 범위를 기준으로 필터링하기 쉽습니다. 예를 들어, 1000에서 1500 사이의 가격의 다이아몬드를 원한다면 다음과 같이 쉽게 필터링 할 수 있습니다.

숫자 변수로 작업 할 때 일반적으로, 당신은 가장 자주 불평등 연산자의 사용을 만들 수 있습니다 ><>=,와 <=. 숫자 변수에 ==and !=연산자 를 사용하는 것이 가능하지만 , 일반적으로이 연산자 를 사용하는 것이 좋습니다.
사용하는 문제 ==는 테스트 한 값과 정확히 일치하는 값만 반환한다는 것입니다. 테스트 할 데이터 집합이 정수로 구성되어 있다면 가능하지만 십진수를 처리하는 경우 자주 중단됩니다. 예를 들어, 1.0100000001 == 1.01로 평가됩니다 FALSE. 이것은 기술적으로 사실이지만 10 진수 정밀도로 문제가 생기기 쉽습니다. 내가 ==작업하는 데이터가 정수로만 구성되어 있지 않으면 수치 변수로 작업 할 때 사용하지 않습니다 !

범주 형 변수 필터링

범주 형 변수는 비 양적 변수입니다. 예제 데이터 세트에서 절단, 색상 및 선명도는 범주 형 변수입니다. 숫자 변수, 불평등과는 대조적으로 ><>=그리고 <=여기에 의미가 없습니다. 대신, 자주의 사용으로 만들거야 ==!=그리고 %in%범주 변수를 필터링 할 때 연산자.
위의 그림에서 우리는 데이터 세트를 필터링하여 ==연산자를 사용하여 절단이 Ideal 인 다이아몬드 만 포함 시켰습니다 . 잘라 내기가 프리미엄 인 다이아몬드를 포함하도록이 필터를 확장하려고한다고 가정 해 보겠습니다. 이를 달성하기 위해 %in%연산자를 사용합니다 .

 

어떻게 작동합니까? 먼저 원하는 절단 옵션의 벡터를 만듭니다 c('Ideal', 'Premium'). 그런 다음 %로 %를 사용하여 해당 벡터에있는 컷이있는 다이아몬드 만 필터링합니다. dplyr은 Cut이 Ideal 인 다이아몬드와 Cut이 Premium 인 다이아몬드를 모두 필터링합니다. % in % 함수에 대해 확인하는 벡터는 임의로 길 수 있으므로 범주 형 데이터로 작업 할 때 매우 유용 할 수 있습니다.

이렇게하면 더 큰 잠재적 옵션 집합을 필터링 할 때 코드의 가독성을 높일 수 있습니다. 즉, 다른 소스의 기존 옵션 벡터가있는 경우이를 사용하여 데이터 세트를 필터링 할 수 있습니다. 단일 분석으로 여러 데이터 세트로 작업을 시작하면 매우 유용합니다!

논리 연산자로 여러 필터링 작업 연결

dplyr 필터 기능의 진정한 힘은 유연성입니다. 논리 연산자 &, | 및!를 사용하여 단일 명령으로 많은 필터링 작업을 그룹화하여 원하는 데이터 세트를 얻을 수 있습니다!
Cut이 Ideal이고 캐럿이 1보다 큰 모든 다이아몬드를 선택한다고 가정 해 봅시다 :

 

BOTH 조건은 TRUE데이터가 선택 될 때 까지 평가되어야합니다 . 즉, 절단은 이상적이어야하며 캐럿은 1보다 커야합니다.
자신을 두 가지 조건으로 제한 할 필요도 없습니다. 당신은 원하는만큼 가질 수 있습니다! 우리가 다이아몬드의 색이 E인지 확인하기를 원한다고 가정 해 봅시다. 예제를 확장 할 수 있습니다 :

 

커팅이 이상적이거나 캐럿이 1보다 큰 행을 선택하려면 어떻게해야합니까? 그럼 우리는   파이프(|) 를 사용합니다!

논리 구문의 일부 조합을 기반으로 데이터 집합을 필터링하려는 경우이 dplyr filter함수와 R의 기본 제공 논리 매개 변수를 사용하고있을 가능성이 있습니다 . 논리 표현을 결합하여 원하는 것을 정확하게 얻을 수있는 방법을 찾아야합니다.

결론

dplyr filter일반적으로 R에서 가장 많이 사용되는 함수 중 하나입니다. 특히 R에서 필터링하려고 할 때 특히 그렇습니다.이 기사에서는 데이터 세트를 필터링하는 방법, 변수가 숫자 형, 범주 형 또는 둘 다 섞는다. dplyr을 사용하여 R에서 효과적으로 필터하는 방법에 대한 이해를 확실히하기 위해 지금 배운 것을 실습 해보십시오!

참조: How to Filter in R: A Detailed Introduction to the dplyr Filter Function

(Visited 27 times, 1 visits today)