R의 가장 대표적인 데이터 관리 패키지 중 하나 인 dplyr 패키지는 메모리 내 데이터와 데이터베이스에 저장된 데이터로 작동합니다. 이번 기사는 dplyr을 사용하여 데이터베이스에 대한 작업을 직접 실습해 볼것입니다.

데이터가 커서 R에서 직접 로드할 수 없거나 분석 속도가 느려지는 경우 데이터베이스와 함께 dplyr을 사용하면 큰 이점을 얻을 수 있습니다. 데이터가 R에 전체 데이터를 로드하는 대신 데이터베이스에 있는 경우 원하는 데이터의 하위 집합 또는 집계를 사용할 수 있습니다. 또한 데이터 파일이 많은 경우, 데이터를 csv나 기타 형식이 아닌 데이터베이스에 저장하면 보안이 향상되고 관리가 쉬워 집니다.

dplyr은 R 의 데이터 조작, 데이터 탐색 및 기능 공학을 위한 정말 강력한 패키지이며 SQL을 모르는 경우 R 내의 데이터베이스를 사용할 수있는 기능을 제공합니다. 또한 dplyr 함수들은 읽기 및 쓰기가 쉽습니다. dplyr 은 데이터베이스  테이블을 데이타 프레임으로 간주하고 필요시할 때까지 실제 작업을 지연시키고 필요할 때만 데이터베이스 에서 R 로 데이터를 읽어 들입니다. Spark 를 아는 사람이라면 프로세스와 함수도 유사점을 가지고 있다고 알고 있습니다.

dplyr sqlite, mysqlpostgresql과 같은 몇 가지 데이터베이스를 지원합니다. 이 기사 에서는 sqlite 데이터베이스로 작업하는 방법을 살펴 보겠습니다. (좀더 자세한 정보는 dplyr 데이터베이스 vignette 에서 자세한 정보를 얻을 수 있습니다.)

사람들이 약을 복용할 때, 만약 그들이 부작용을 경험한다면, 그들은 FDA에 보고할 수 있습니다. 이러한 데이터는 공개 도메인에 있으며 누구나 다운로드하여 분석할 수 있습니다.이 게시물에서 우리는 환자의 인구 통계 정보, 그들이 사용한 약물 및 그들이 사용한 지시, 반응 및 결과를 다운로드 할 것입니다. 그런 다음 모든 데이터 세트를 데이터베이스에 저장하고 dplyr을 사용하여 데이터베이스에 대한 작업을 수행합니다.

아래 코드를실행하면 다양한 데이터 세트를 병합하여 부작용 데이터를 다운로드하고 각 범주에 대해 대규모 데이터 세트를 하나씩 생성할 수 있습니다. 시연을 위해 2013-2015년에 발생한 부작용 보고서를 사용해 봅시다. 부작용 사례는 분기별 데이터(매 3개월마다 각 범주에 대한 단일 데이터 파일)로 릴리스 됩니다.

R 패키지 로드

부작용 데이터 다운로드

분기별 데이터 파일 연결 및 각 범주에 대한 단일 데이터 세트 생성

 

인구 통계학

인구 통계 데이터는 건 수가 300만개 이상이며, 연령, 연령 코드, 발생 날짜, 성별, 체중, 체중 코드 및 발생 국가로 구성되어 있습니다.

약품

약품 데이터는 약 천만 건을 가지고 있고 변수는 약물 이름과 경로입니다.

진단 / 표시

표시 데이터 건 수는 6백만개를 초과하며, 변수는 우선 순위, 약물 순서 및 표시(사전 표시)입니다.

결과

결과 데이터 건 수는 2백만개 이상이며 변수는 우선 순위 및 결과 코드(outc_code)입니다.

반응(부작용)

따라서, 부작용(반응)데이터 건수는 9백만개 이상 이며, 변수는 primaryid 와 부작용에 대한 우선 순위가 지정되고 선호되는 용어임을 알 수 있다.

 

데이터베이스 생성

R에서 SQLite 데이터베이스를 만들려면 경로만 지정하면 됩니다. 우리는 src_sqlite를 사용하여 기존 SQL데이터베이스에 연결하고, 테이블은 해당 데이터베이스 내의 테이블에 연결합니다. 또한 src_sqlite를 사용하여 지정된 경로에 새 SQlite데이터베이스를 만들 수 있습니다. 경로를 지정하지 않으면 작업 디렉토리에 생성됩니다.

SQLite 데이터베이스를 사용하여 SQLite 데이터베이스를 만들지 마십시오. 우리는 src_sqlite를 사용하여 SQL 데이터베이스를 연결하고 테이블을 데이터베이스에 연결합니다. 또한 src_sqlite를 사용하여 SQlite 데이터베이스를 사용할 수 있습니다. 경로를 사용하지 않아도됩니다.

데이터를 데이터베이스에 저장

데이터베이스에 데이터를 업로드하기 위해 dplyr 함수 copy_to 를 사용합니다. 설명서에 따르면 가능하면 새 객체는 현재 소스에 대한 현재 연결로 제한되는 임시 객체입니다. 따라서 임시로 변경하여 임시로 유지해야합니다.

데이터베이스에 데이터를 업로드하기 위해, 우리는 받아 쓰기_to기능을 사용한다. 설명서에 따르면 가능한 경우 새 개체는 일시적이며 소스에 대한 현재 연결로 제한됩니다. 그래서 우리는 영구적으로 만들기 위해 임시로 유지해야합니다.

이제 모든 데이터 세트를 “adverse_event”데이터베이스에 저장했습니다. 원하는 대로 조회 및 분석을 수행할 수 있습니다.

데이터베이스 접속

데이터베이스의 테이블 리스트

데이터베이스 조회하기

우리는 데이터베이스 작업을 위해 데이터 조작에서 사용하는 것과 동일한 dplyr 동사를 사용합니다. dplyr 은 작성된 R 코드를 SQL 코드로 변환합니다. tbl을 사용하여 데이터베이스 내 테이블에 연결합니다.

아래와 같이 dplyr가 생성 한 질의를 볼 수 있습니다 :

또한 데이터베이스가 쿼리가 어떻게 실행할 계획인지 확인할 수 있습니다.

이와 유사하게 데이터베이스의 다른 테이블로 연결해 보겠습니다.

필요할 때까지 실제 작업을 지연시키고 필요할 때만 데이터베이스에서 R로 데이터를 로드 한다는 점을 주목하는 것이 매우 흥미롭습니다 .collect()head()count()등의 작업을 사용하면 명령이 실행됩니다.

tbls 데이터베이스에서 head() 를 사용할 수 있지만, 전체 쿼리를 실행하지 않으면 마지막 행을 찾을 수는 없습니다.

table2

데이터베이스에서 테이블에 대한 dplyr 함수들 (select, arrange, filter, mutate, summarize, rename)

R 패키지 magrittr 에서 %> %와 함께 dplyr 작업을 파이프 할 수 있습니다. 파이프 라인 %> %는 오른쪽에 있는 함수의 첫 번째 인수로 파이프의 왼쪽에서 출력을 받습니다.

가장 부작용이 많은 상위 10 개국을 찾기

table3

다음과 같이 ggplot 에 연결하여 포함시킬 수도 있습니다.

fig1

가장 일반적인 약품 찾기

table4

가장 많이 발생하는 5 가지 주요 결과는?

table5

table6

상위 10 개 반응은?

table7

table8

결합 (Joins)

기본 ID 를 기반으로 한 인구 통계, 결과 및 반응을 결합 합니다.

table9

조인에서 기본 키와 보조 키를 사용할 수도 있습니다. 2 개의 키 (1 차 및 2 차 키)를 사용하여 약품 및 표시에 적용 합니다.

table10

 

이 게시물에서는 dplyr 패키지를 사용하여 데이터베이스를 만들고 데이터베이스에 데이터를 업로드하는 방법을 살펴 보았습니다. 또한 데이터베이스에서 데이터를 조회하여 다양한 분석을 수행하는 방법을 살펴 보았습니다.

R 에서 데이터베이스로 작업하는 것은 R에 데이터를 로드할 수 없거나 데이터 분석 속도가 느려지는 경우 큰 장점이 있습니다.데이터가 R에 전체 데이터를 로드하는 대신 데이터베이스에 상주하는 경우 관심 있는 데이터의 하위 집합이나 Aggregate를 사용하여 작업할 수 있습니다. 또한 데이터 파일이 많을 경우 데이터를 csv 나 다른 형식이 아닌 데이터베이스에 저장하면 더 나은 보안을 유지하고 관리하기가 쉽습니다.

이 게시물에 충분합니다. 내 다음 게시물에서 보자. 여기서 dplyr two-table 동사를 읽을 수 있습니다. 질문이나 의견이 있으시면 언제든지 의견을 남기십시오.

 

 

[출처] Working with databases in R | DataScience+