데이터 사이언스 100번의 노크(구조화 데이터 처리편) – R Part 2 (Q21 to Q40)

데이터 사이언스
설명:

"nrow(df_receipt)"라는 코드는 R 또는 유사한 통계 프로그래밍 언어로 작성되었습니다. 이는 "df_receipt"라는 데이터 프레임의 행 수를 결정하는 데 사용된다.

아래는 코드의 내용을 설명한다.

"nrow()"는 R의 내장 함수로 데이터 프레임의 행 수를 반환한다.

"df_receipt"는 행 수를 구하고자 하는 데이터 프레임의 이름이다.

예를 들어, 데이터 프레임 "df_receipt"에 100개의 데이터가 있는 경우, 이 코드를 실행하면 100이라는 값이 반환된다. 이 코드는 추가 분석이나 데이터 조작을 수행하기 전에 데이터 프레임의 크기를 빠르게 확인하여 예상대로 행 수가 있는지 확인하는 데 유용합니다.
 
설명:

코드 "length(unique(df_receipt$customer_id))"는 R 또는 유사한 통계 프로그래밍 언어로 작성된 코드입니다. 이는 "df_receipt"라는 데이터 프레임에 포함된 고유 고객 수를 결정하는 데 사용됩니다.

아래는 코드의 세부 내용을 설명합니다.

"unique()"는 특정 벡터의 고유한 요소만을 포함하는 벡터를 반환하는 R 함수입니다. 이 경우 "unique()" 함수에 전달되는 벡터는 "df_receipt$customer_id"로 "df_receipt" 데이터 프레임의 고객 ID를 포함하는 열이다.

"length()"도 벡터의 요소 수를 반환하는 R의 내장 함수이다. 이 경우 "length()"에 전달되는 벡터는 "unique()" 함수의 출력이며, 고유한 고객 ID를 포함하는 벡터이다.

요약하면, 이 코드는 고유한 고객 ID가 포함된 벡터의 길이를 취하여 "df_receipt" 데이터 프레임의 고유한 고객 수를 계산한다. 예를 들어, 데이터 프레임에 1000개의 행이 있고 고유한 고객 ID가 500개밖에 없는 경우, 이 코드를 실행하면 500이라는 값이 반환된다. 이 코드는 데이터 세트의 고유 고객 수를 파악하거나 고객 평생 가치와 같은 고객 수준 지표를 계산하는 데 유용하다.
 
해설:

"df_receipt %>% group_by.

df_receipt %>% group_by(store_cd) %>% summarise(amount = sum(amount), quantity = sum(quantity), .groups = 'drop')"라는 코드는 R 또는 이와 유사한 통계 프로그래밍 언어로 작성되어 있습니다. 이는 "df_receipt" 데이터 프레임을 "store_cd"라는 변수로 그룹화하여 각 매장 그룹 내 "amount" 및 "quantity" 변수의 합계를 계산하는 데 사용된다.

아래는 코드의 세부 내용을 설명합니다.

파이프 연산자('%>%')는 여러 함수를 순서대로 연결하기 위해 사용합니다. 파이프 연산자('%>%')는 여러 함수를 연쇄적으로 연결하여 사용하는 것으로, 이전 함수의 출력을 받아 다음 함수의 입력으로 사용합니다. 이 예제에서는 "group_by()"와 "summarise()" 함수를 연결하기 위해 파이프 연산자를 사용하고 있다.

"group_by()"는 데이터 프레임을 하나 이상의 변수로 그룹화하는 데 사용되는 R 함수입니다. 이번에는 "df_receipt" 데이터 프레임을 "store_cd" 변수로 그룹화합니다.

"summarise()"는 데이터 프레임의 요약 통계를 계산하는 데 사용되는 R 함수입니다. 이번에는 각 매장 그룹 내 '금액', '수량' 변수의 합계를 계산하고 있습니다. 또한, 대입 연산자 '='를 사용하여 새로운 변수의 이름을 지정하고 있습니다.

'summarise()' 함수의 '.groups' 인수는 출력 형식을 지정하는 데 사용됩니다. 이를 "drop"으로 설정하면 출력에서 그룹화 정보가 제거됩니다.

이 코드의 결과는 "df_receipt" 데이터 프레임의 각 매장에 대해 하나의 행을 가진 새로운 데이터 프레임이며, "amount" 및 "quantity" 열에는 각 매장 그룹 내의 이러한 변수의 합계가 포함되어 있습니다. 이 코드는 총매출액이나 판매 수량과 같은 매장 단위의 지표를 계산하는 데 유용하다.
 
설명:

df_receipt %>% group_by(customer_id) %>% summarise(max_ymd = max(sales_ymd), .groups = 'drop') %>% slice(1:10)"라는 코드는 R 또는 유사한 통계 프로그래밍 언어로 작성된 코드입니다. 있습니다. 이는 "df_receipt" 데이터 프레임을 "customer_id"라는 변수로 그룹화하여 각 고객의 최신 구매 날짜를 찾는 데 사용된다. 마지막으로, 완성된 데이터 프레임의 처음 10줄을 슬라이스하고 있습니다.

아래는 코드의 세부 내용을 설명합니다.

파이프 연산자("%>%")는 여러 함수를 순서대로 연결하기 위해 사용합니다. 파이프 연산자("%>%")는 여러 함수를 순서대로 연결하는 데 사용됩니다. 이전 함수의 출력을 받아 다음 함수의 입력으로 사용합니다. 이 예시에서는 "group_by()", "summarise()", "slice()" 함수를 연결하기 위해 파이프 연산자를 사용합니다.

"group_by()"는 데이터 프레임을 하나 이상의 변수로 그룹화하는 데 사용되는 R 함수이다. 이 경우 "df_receipt" 데이터 프레임을 "customer_id" 변수로 그룹화하고 있습니다.

"summarise()"는 데이터 프레임의 요약 통계를 계산하는 데 사용되는 R 함수입니다. 이번에는 "sales_ymd" 변수의 "max()" 함수를 사용하여 각 고객의 최신 구매일을 계산합니다.

"summarise()" 함수의 ".groups" 인수는 출력 형식을 지정하는 데 사용됩니다. 이를 "drop"으로 설정하면 출력에서 그룹화 정보가 제거됩니다.

"slice()"는 데이터 프레임에서 행의 하위 집합을 추출하는 데 사용되는 R 함수입니다. 이 경우 결과 데이터 프레임에서 처음 10개의 행을 선택합니다.

이 코드의 결과는 "df_receipt" 데이터 프레임의 각 고객에 대해 하나의 행을 가진 새로운 데이터 프레임이 될 것이며, "max_ymd" 열에는 각 고객의 최신 구매 날짜가 포함될 것이다. 마지막으로 이 코드는 결과 데이터 프레임의 처음 10개의 행을 선택한다. 이 코드는 각 고객의 최신 구매 날짜를 파악하는 데 도움이 되며, 다양한 고객 수준 분석 및 세분화 목적으로 사용할 수 있습니다.
설명:

이 코드에서는 %>%(파이프) 연산자를 사용하여 df_receipt라는 데이터 프레임에 대해 일련의 연쇄적인 연산을 수행한다.

다음은 각 연산이 무엇을 하는지 단계별로 설명합니다.

group_by(customer_id): customer_id 열로 데이터를 그룹화하여 이후 처리를 고객별로 나누어 수행한다.

summarise(min_ymd = min(sales_ymd), .groups = "drop"): sales_ymd 열의 최소값을 계산하여 min_ymd라는 새로운 열에 저장하여 각 그룹 내 데이터의 요약을 생성한다. .groups = "drop" 인수는 dplyr에게 결과 데이터 프레임에서 그룹화 정보를 삭제하도록 지시한다(추가 분석에 필요하지 않기 때문에).

slice(1:10): 결과 데이터 프레임에서 처음 10개의 행을 선택한다. 데이터는 customer_id로 그룹화되었고, summary 함수가 사용되었기 때문에 데이터 세트의 처음 10명의 고객에 대한 가장 빠른 sales_ymd 값을 얻을 수 있다.

전체적으로 이 코드는 df_receipt 데이터 프레임에서 각 고객의 가장 빠른 sales_ymd 값을 선택하고 데이터 세트의 첫 10명의 고객 중 가장 빠른 날짜를 반환한다.
 
설명:

이 코드에서는 %>%(파이프) 연산자를 사용하여 df_receipt라는 데이터 프레임에 대해 일련의 연쇄적인 연산을 수행한다.

다음은 각 연산이 무엇을 하는지에 대한 단계별 설명입니다.

group_by(customer_id) : group_by(customer_id) : customer_id 열로 데이터를 그룹화하여 이후 처리를 고객별로 나누어 수행한다.

summarise(max_ymd = max(sales_ymd), min_ymd = min(sales_ymd), .groups = "drop"): sales_ymd 컬럼의 최대값과 최소값을 계산하여 각각 max_ymd와 min_ymd라는 새로운 컬럼에 저장한다. 각 그룹 내 데이터의 요약을 생성한다. .groups = "drop" 인수는 dplyr에게 결과 데이터 프레임에서 그룹화 정보를 삭제하도록 지시한다(추가 분석에 필요하지 않기 때문에).

filter(max_ymd ! = min_ymd): max_ymd 값이 min_ymd 값과 같지 않은 행만 포함하도록 데이터 프레임을 필터링한다. 이를 통해 데이터 세트의 대상 기간 동안 단 한 번만 구매한 고객은 제외된다.

slice(1:10): 결과 데이터 프레임의 처음 10개의 행을 선택한다. 데이터는 customer_id로 그룹화되어 max 함수와 min 함수로 요약되고 요약 통계를 기반으로 필터링되어 데이터 세트의 대상 기간 동안 한 번 이상 구매를 한 처음 10명의 고객을 얻을 수 있다.

전체적으로 이 코드는 df_receipt 데이터 프레임에서 다루는 기간 동안 한 번 이상 구매한 고객을 선택하고 가장 빠른 구매 날짜와 가장 늦은 구매 날짜를 반환합니다. 이 코드는 이러한 조건을 충족하는 처음 10명의 고객에 대해 가장 빠른 구매 날짜와 가장 늦은 구매 날짜를 반환합니다.
 
설명:

이 코드에서는 %>%(파이프) 연산자를 사용하여 df_receipt라는 데이터 프레임에 대해 일련의 연쇄적인 연산을 수행한다.

다음은 각 연산이 무엇을 하는지 순서대로 설명한다.

group_by(store_cd): store_cd 열로 데이터를 그룹화하여 각 매장별로 후속 처리를 수행한다.

summarise(mean_amount = mean(amount), .groups = "drop") : 각 그룹 내 데이터의 요약을 만들고, amount 열의 평균값을 계산하여 mean_amount라는 새로운 열에 저장한다. .groups = "drop" 인수는 dplyr에게 결과 데이터 프레임에서 그룹화 정보를 삭제하도록 지시한다(추가 분석에 필요하지 않기 때문에).

arrange(desc(mean_amount)) : 결과 데이터 프레임을 mean_amount 열의 내림차순(높은 것부터 낮은 것까지)으로 정렬한다.

slice(1:5) : 결과 데이터 프레임에서 처음 5개 행을 선택한다. 데이터는 store_cd로 그룹화되어 mean 함수를 사용하여 요약되었으므로, 모든 거래에서 평균 금액이 가장 높은 매장을 얻을 수 있습니다.

전체적으로 이 코드는 df_receipt 데이터 프레임의 모든 트랜잭션에서 평균 금액이 가장 높은 매장을 선택하고, 그 값을 기준으로 상위 5개 매장을 반환하고 있습니다.
 
설명:

이 코드에서는 %>%(파이프) 연산자를 사용하여 df_receipt라는 데이터 프레임에 대해 일련의 연쇄적인 연산을 수행한다.

다음은 각 연산이 무엇을 하는지 순서대로 설명한다.

group_by(store_cd): store_cd 열로 데이터를 그룹화하여 이후 처리를 매장별로 나누어 수행하도록 합니다.

summarise(median_amount = median(amount), .groups = "drop") : 각 그룹 내 데이터의 요약을 생성하고, amount 열의 중앙값을 계산하여 median_amount라는 새로운 열에 저장한다. .groups = "drop" 인수는 dplyr에게 결과 데이터 프레임에서 그룹화 정보를 삭제하도록 지시한다(추가 분석에 필요하지 않기 때문에).

arrange(desc(median_amount)) : 결과 데이터 프레임을 median_amount 열을 기준으로 내림차순(높은 것부터 낮은 것까지)으로 정렬한다.

slice(1:5) : 결과 데이터 프레임에서 처음 5개 행을 선택한다. 데이터는 store_cd로 그룹화되어 median 함수를 사용하여 요약되었으므로, 모든 트랜잭션에서 중간값이 가장 높은 매장을 얻을 수 있습니다.

전체적으로 이 코드는 df_receipt 데이터 프레임의 모든 트랜잭션에서 가장 중간값이 높은 매장을 선택하고, 그 값을 기준으로 상위 5개 매장을 반환하고 있습니다. 이 코드와 지난번 설명한 코드의 차이점은 이 코드에서는 각 매장의 금액 값의 중심 경향을 계산하기 위해 평균 함수가 아닌 중앙값 함수를 사용한다는 점입니다.
 
설명:

이 코드는 dplyr 패키지를 사용하여 df_receipt라는 데이터 프레임에 대한 데이터 조작을 수행한다. 아래는 이 코드가 수행하는 작업을 단계별로 설명한다.

파이프 연산자는 한 함수의 출력이 다음 함수의 입력이 되도록 함수를 연쇄하는 데 사용되는 파이프 연산자이다.

group_by 함수는 데이터 프레임을 store_cd와 product_cd로 그룹화하는 함수이다.

summarise 함수는 각 그룹의 요약 통계를 계산한다. 이 경우 각 그룹의 행 수를 계산하고 cnt라는 새로운 열을 생성합니다.

.groups = "drop_last" 인수는 summarise 함수에서 생성된 마지막 그룹화 수준, 즉 product_cd 그룹화를 삭제하는 데 사용됩니다. 이는 나중에 최대 수로 쉽게 필터링할 수 있도록 하기 위해 수행됩니다.

filter 함수는 특정 조건을 충족하는 행을 선택한다. 이 경우 cnt 열이 데이터 프레임의 cnt 열의 최대값과 동일한 행을 선택하게 된다.

ungroup 함수는 데이터 프레임에서 모든 그룹화 수준을 제거한다.

slice 함수는 위치에 따라 행의 하위 집합을 선택한다. 이 경우 데이터 프레임의 처음 10개의 행을 선택한다.

즉, 이 코드는 전체적으로 데이터를 상점과 상품별로 그룹화하고, 각 그룹의 개수를 계산하고, 개수가 가장 많은 그룹을 필터링하여 상위 10개를 선택한다.
 
 
설명:

이 코드는 table 함수와 for 루프를 사용하여 df_receipt 데이터 프레임에서 각 매장의 각 상품 코드의 모드(가장 빈번한 값)를 구합니다.

다음은 이 코드가 수행하는 작업을 단계별로 설명합니다.

table 함수는 df_receipt의 store_cd와 product_cd의 각 조합에 대한 카운트 분할 테이블을 생성합니다. 그 결과 table_product라는 객체는 행이 각 매장, 열이 각 상품 코드에 해당하는 행렬이 된다.

names 함수는 table_product 행렬의 첫 번째 열에서 매장 코드를 추출하여 store라는 문자 벡터로 저장한다.

각 상점의 각 상품 코드의 모드를 저장하기 위해 mode_product라는 빈 벡터가 생성된다.

for 루프는 store의 각 매장을 반복하여 해당 매장의 각 상품 코드의 모드를 구하고, which.max 함수로 table_product 행렬의 각 행의 최대 개수 인덱스를 구하고, names 함수로 해당 인덱스를 가진 상품 코드를 추출한다. 얻어진 상품 코드는 mode_product 벡터에 저장된다.

store_cd와 product_cd 두 개의 컬럼을 가진 데이터 프레임이 생성되며, store_cd 컬럼에는 store 벡터의 값이, product_cd 컬럼에는 mode_product 벡터의 값이 저장된다.

또한 %>% 연산자를 사용하여 데이터 프레임을 slice 함수로 파이프하여 데이터 프레임의 처음 10개의 행을 선택한다.

즉, 이 코드는 전체적으로 df_receipt에서 각 매장의 각 상품 코드의 모드를 구하고, 이 값으로 데이터 프레임을 만들어 상위 10개를 선택한다.
 
 
설명:

이 코드는 dplyr 패키지를 사용하여 df_receipt 데이터 프레임의 각 매장의 금액 변수의 샘플 표준편차를 계산하고 표준편차가 가장 높은 상위 5개 매장을 선택합니다.

다음은 이 코드가 무엇을 하는지 순서대로 설명한다.

var_sample 함수가 정의되어 있으며, var(x) * (length(x) - 1) / length(x)라는 식을 사용하여 값 x의 벡터에 대한 표본 분산을 계산하고 있습니다. 이 식은 모집단의 분산을 편견 없이 추정하기 위해 length(x) 대신 length(x)를 length(x) - 1로 나누어 분산을 조정한다.

std_sample 함수가 정의되어 있으며, sqrt(var_sample(x))라는 식을 사용하여 값 벡터 x의 표본 표준편차를 계산한다.

head 함수는 결과 데이터 프레임의 처음 5개 행을 선택하는 데 사용된다.

연산자 %>%는 df_receipt 데이터 프레임을 체인의 다음 함수로 파이프하는 데 사용됩니다.

group_by 함수는 데이터를 store_cd로 그룹화하는 데 사용된다.

summarise 함수는 각 그룹의 요약 통계를 계산한다. 이 경우 std_sample 함수를 사용하여 각 그룹의 금액 변수의 샘플 표준 편차를 계산하고 std_amount라는 새 열을 생성합니다.

.groups = "drop" 인수는 출력에서 그룹화 정보를 제거하여 그룹화 된 tibble이 아닌 평평한 데이터 프레임을 만드는 데 사용됩니다.

arrange 함수는 데이터 프레임을 std_amount로 내림차순으로 정렬하여 표준편차가 가장 높은 매장이 먼저 표시되도록 하는 데 사용된다.

n = 5 인수는 출력을 상위 5 개 행으로 제한하는 데 사용됩니다.

즉, 이 코드는 전체적으로 데이터를 매장별로 그룹화하고, 그룹별로 금액 변수의 샘플 표준 편차를 계산하고, 표준 편차 내림차순으로 결과 데이터 프레임을 정렬하고, 상위 5개 결과를 선택한다.
 
설명:

이 코드는 dplyr 패키지를 사용하여 df_receipt 데이터 프레임에서 금액 변수의 사분위를 계산합니다.

다음은 이 코드가 수행하는 작업을 단계별로 설명합니다.

연산자 %>%는 df_receipt 데이터 프레임을 체인의 다음 함수로 파이프하는 데 사용됩니다.

summarise 함수는 데이터 프레임의 요약 통계를 계산하는 데 사용됩니다. 이 경우 분위수 함수를 사용하여 수량 변수의 25, 50(중앙값), 75, 100번째 백분위수를 계산합니다.

결과 데이터 프레임은 1행 4열이며, 열 이름은 amount_25per, amount_50per, amount_75per, amount_100per이며, 해당 사분위수 값도 있습니다.

즉, 전체적으로 이 코드는 df_receipt 데이터 프레임에서 amount 변수의 사분위를 계산하고 사분위 값을 포함한 요약 데이터 프레임을 반환한다.
 
설명:

이 코드는 dplyr 패키지를 사용하여 df_receipt 데이터 프레임을 store_cd로 그룹화하여 각 그룹의 평균 금액을 계산하고, 평균 금액이 330 이상인 그룹만 포함하도록 결과 데이터 프레임을 필터링합니다.

다음은 이 코드가 수행하는 작업을 단계별로 설명한 것입니다.

연산자 %>%는 df_receipt 데이터 프레임을 체인의 다음 함수로 파이프하는 데 사용됩니다.

group_by 함수는 store_cd로 데이터를 그룹화하는 데 사용됩니다.

summarise 함수는 각 그룹의 요약 통계를 계산하는 데 사용됩니다. 이 경우 mean 함수를 사용하여 각 그룹의 평균 금액을 계산하고 mean_amount라는 새로운 열을 생성합니다.

.groups = "drop" 인수는 출력에서 그룹화 정보를 제거하여 그룹화 된 tibble이 아닌 평평한 데이터 프레임으로 만드는 데 사용됩니다.

filter 함수는 mean_amount가 330 이상인 행만 포함하도록 데이터 프레임을 부분 집합화하는 데 사용됩니다.

즉, 이 코드는 전체적으로 데이터를 store_cd로 그룹화하여 각 그룹의 평균 금액을 계산하고 평균 금액이 330 이상인 그룹만 선택한다. 결과 데이터 프레임에는 각 대상 매장에 대해 하나의 행이 포함되며, 매장 코드와 평균 금액이 표시됩니다.
 
설명:

이 코드는 dplyr 패키지를 사용하여 customer_id가 "Z"로 시작하는 고객을 제외한 후 각 고객의 평균 소비액을 계산한다.

아래는 이 코드가 하는 일을 단계별로 설명한다.

연산자 %>%는 df_receipt 데이터 프레임을 체인의 다음 함수로 파이프하는 데 사용됩니다.

filter 함수는 customer_id가 문자 "Z"로 시작하는 행을 제외하는 데 사용됩니다.

group_by 함수는 customer_id로 데이터를 그룹화하는 데 사용됩니다.

summarise 함수는 각 그룹의 요약 통계를 계산하는 데 사용됩니다. 이 경우 sum 함수를 사용하여 각 고객이 사용한 금액의 합계를 계산하고 sum_amount라는 새로운 열을 생성하고 있습니다.

.groups = "drop" 인수는 출력에서 그룹화 정보를 제거하여 그룹화 된 ibble이 아닌 평평한 데이터 프레임으로 만드는 데 사용됩니다.

또 다른 summarise 함수는 전체 고객의 sum_amount의 평균값을 계산하는 데 사용된다.

결과 mean_amount 값은 $mean_amount를 사용하여 추출됩니다.

전체적으로 이 코드는 customer_id가 "Z"로 시작하는 행을 제외하기 위해 데이터를 필터링하고, customer_id로 데이터를 그룹화하고, 각 고객이 사용한 총 금액을 계산하고, 모든 고객에 대한 평균 sum_amount를 계산하고, 결과의 평균값을 반환합니다. 있다. 결과 출력은 각 고객이 사용한 평균 금액을 나타내는 단일 수치이다.
설명:

이 코드는 dplyr 패키지를 사용하여 customer_id가 'Z'로 시작하는 고객을 제외한 후, 전체 고객의 평균 사용액 이상을 사용한 고객을 필터링하고 있습니다. 그런 다음 총 사용금액을 기준으로 상위 10명의 고객을 선택합니다.

다음은 이 코드가 하는 일을 순서대로 설명한 것입니다.

연산자 %>%는 df_receipt 데이터 프레임을 체인의 다음 함수로 파이프하는 데 사용됩니다.

filter 함수는 customer_id가 "Z"로 시작하는 행을 제외하는 데 사용됩니다.

group_by 함수는 customer_id로 데이터를 그룹화하는 데 사용됩니다.

summarise 함수는 각 그룹의 요약 통계를 계산하는 데 사용됩니다. 이 경우 sum 함수를 사용하여 각 고객이 사용한 금액의 합계를 계산하고 sum_amount라는 새로운 열을 생성하고 있습니다.

.groups = "drop" 인수는 출력에서 그룹화 정보를 제거하여 그룹화 된 ibble이 아닌 평평한 데이터 프레임으로 만드는 데 사용됩니다.

df_sum 데이터 프레임은 위의 작업의 출력을 저장하여 생성됩니다.

summarise 함수는 다시 df_sum의 모든 고객의 sum_amount의 평균값을 계산하는 데 사용된다.

결과 mean_amount 값은 $mean_amount를 사용하여 추출한다.

연산자 %>%는 df_sum을 체인의 다음 함수로 파이프하는 데 사용된다.

필터 함수는 sum_amount가 7단계에서 계산된 mean_amount보다 큰 행만 선택하는 데 사용된다.

슬라이스 함수는 원래 데이터 프레임의 순서에 따라 결과 데이터 프레임의 상위 10 개 행만 선택하는 데 사용됩니다.

즉, 이 코드는 전체적으로 customer_id가 "Z"로 시작하는 행을 제외하기 위해 데이터를 필터링하고, customer_id로 데이터를 그룹화하고, 각 고객이 사용한 총 금액을 계산하고, 전체 고객의 평균 sum_amount를 계산하고, 사용한 총 금액이 전체 고객의 평균 금액 이상의 고객 데이터 프레임 생성, 사용한 총 금액을 기준으로 상위 10명의 고객을 선택하는 것입니다.
 
설명:

이 코드는 df_receipt와 df_store의 두 데이터 프레임 사이에서 공통 열 "store_cd"를 기준으로 내부 결합 작업을 수행한다. 이 작업의 결과는 slice() 함수로 전송되어 결과 데이터 프레임의 처음 10개의 행이 선택됩니다.

이제 코드를 단계별로 분해해 보겠습니다.

inner_join(df_receipt, df_store[c("store_cd", "store_name")], by = "store_cd"): df_receipt 데이터 프레임과 "store_cd"와 "store_name" 열만 포함하는 df_store의 하위 집합을 결합합니다. store의 하위 집합과 df_store 데이터 프레임 간의 내부 바인딩을 수행한다. 결합은 두 데이터 프레임에 모두 존재하는 "store_cd" 열에 대해 수행된다. 결과는 두 데이터 프레임의 "store_cd" 컬럼이 일치하는 모든 행을 포함하는 새로운 데이터 프레임이다.

%>%: 이전 명령의 출력을 받아 다음 명령의 입력으로 파이프하는 파이프 연산자이다.

slice(1:10): 이 함수는 이전 명령에서 얻은 데이터 프레임의 처음 10개의 행을 선택한다.

즉, 이 코드의 전체 목적은 df_receipt와 df_store의 하위 집합 간의 내부 결합 작업 결과의 처음 10 줄을 선택하는 것입니다. 결과 데이터 프레임은 두 데이터 프레임의 "store_cd"열이 일치하는 행만 포함하며, df_store의 "store_cd"와 "store_name"열과 df_receipt의 모든 열을 포함하게 된다.

 

설명

이 코드는 df_product와 df_category의 두 데이터 프레임 사이에서 공통 열 'category_small_cd'를 기준으로 내부 결합 연산을 수행한다. 이 연산의 결과는 slice() 함수로 파이프되어 결과 데이터 프레임의 처음 10개의 행을 선택한다.

이제 코드를 단계별로 분해해 보자.

inner_join(df_product, df_category[c("category_small_cd", "category_small_name")], by = "category_small_cd"): 이것은 df_product 데이터 프레임과 " category_small_cd" 및 "category_small_name" 컬럼만 포함하는 df_category의 하위 집합 간 내부 바인딩을 수행한다. 결합은 두 데이터 프레임에 존재하는 "category_small_cd" 컬럼에 대해 수행된다. 결과는 두 데이터 프레임의 "category_small_cd" 컬럼이 일치하는 모든 행을 포함하는 새로운 데이터 프레임이 된다.

%>%: 이전 명령의 출력을 받아 다음 명령의 입력으로 파이프하는 파이프 연산자이다.

slice(1:10) : 이 함수는 이전 명령에서 얻은 데이터 프레임의 처음 10개의 행을 선택한다.

즉, 이 코드의 전체 목적은 df_product와 df_category의 하위 집합 간의 내부 결합 작업 결과의 처음 10개의 행을 선택하는 것이다. 결과 데이터 프레임은 두 데이터 프레임의 "category_small_cd" 열이 일치하는 행만 포함하고, df_category의 "category_small_cd" 및 "category_small_name" 열과 df_product의 모든 컬럼을 가지게 된다.

 

설명:

이 코드에서는 고객 데이터의 요약표를 얻기 위해 몇 가지 처리를 수행합니다. 마지막으로 이 결과를 slice() 함수에 전달하여 결과 데이터 프레임의 처음 10개의 행을 선택합니다.

이제 코드를 단계별로 분해해 보겠습니다.

df_sum <- df_receipt %>% group_by(customer_id) %>% summise(sum_amount = sum(amount), .groups = "drop"): 이 코드는 먼저 df_receipt 데이터 프레임을 "customer_id" 열로 그룹화합니다. id" 열로 그룹화하고, sum() 함수를 사용하여 "amount" 열을 요약하고 있습니다. 결과 데이터 프레임 df_sum에는 각 고객이 사용한 금액의 합계가 포함되어 있습니다. .groups 매개 변수는 출력에서 그룹화 정보를 제거하기 위해 "drop"으로 설정되어 있다.

df_target <- df_customer %>% filter(gender_cd == "1" & !grepl("^Z", customer_id)): 이 코드는 df_customer 데이터 프레임을 필터링하여 "gender_cd" 컬럼이 "1"과 같고, "customer_id" 컬럼이 "Z"로 시작하지 않는 행만 포함하도록 필터링한다. 결과적으로 데이터 프레임 df_target에는 ID가 "Z"로 시작하지 않는 남성 고객만 포함됩니다.

left_join(df_target["customer_id"], df_sum, by = "customer_id"): df_target["customer_id"]와 df_sum 사이에서 "customer_id" 열을 기준으로 왼쪽 결합 작업을 수행한다. 결과는 df_target의 모든 행과 df_sum의 각 고객이 사용한 해당 총액을 포함하는 새로운 데이터 프레임입니다.

replace_na(list(sum_amount = 0)): "sum_amount" 열의 누락된 값을 기본값인 0으로 바꾼다.

slice(1:10): 이 함수는 이전 명령에서 얻은 데이터 프레임의 처음 10개의 행을 선택한다.

즉, 이 코드의 전체 목적은 ID가 "Z"로 시작하지 않는 남성 고객이 지출한 총 금액의 요약표를 얻는 것입니다. 완성된 데이터 프레임은 "customer_id"와 "sum_amount"라는 두 개의 열이 있고, "sum_amount"는 각 고객이 사용한 총 금액이며, "sum_amount"열의 누락된 값은 모두 0으로 대체되며, 결과 데이터 프레임은 처음 10줄로 제한된다.
 
설명:

이 코드는 두 개의 고객 데이터 요약 테이블을 얻기 위해 몇 가지 작업을 수행하고 "customer_id" 컬럼을 기반으로 두 테이블 간에 완전 결합 작업을 수행한다. 결과 데이터 프레임에는 판매 날짜가 가장 명확한 상위 20명의 고객과 구매 금액 합계가 가장 높은 상위 20명의 고객이 포함되어 있습니다.

이제 코드를 단계별로 분해해 보겠습니다.

df_data <- df_receipt %>% filter(!grepl("^Z", customer_id)) %>% group_by(customer_id): 이 코드는 먼저 df_receipt 데이터 프레임을 필터링하여 "customer_id" 열 이 "Z"로 시작하는 행을 제외합니다. 결과적으로 데이터 프레임은 "customer_id" 열로 그룹화됩니다. 결과 df_data 데이터 프레임은 df_receipt에서 "Z" 고객 ID를 제거한 모든 행을 포함하며 "customer_id"로 그룹화되어 있다.

df_cnt <- df_data %>% summarise(come_days = n_distinct(sales_ymd), .groups = "drop") %>% arrange(desc(come_days), customer_id) %>% slice(1:20): 이 코드에서는 먼저 n_distinct() 함수를 사용하여 각 고객의 "sales_ymd" 값의 수를 계산하여 df_data 데이터 프레임을 요약하고 있습니다. 결과 데이터 프레임 df_cnt는 각 고객의 총 고유 판매일 수를 포함합니다. 이 데이터 프레임은 "come_days"의 내림차순, "customer_id"의 내림차순으로 정렬됩니다. 그런 다음 slice() 함수를 사용하여 결과 데이터 프레임의 처음 20개 행을 선택합니다.

df_sum <- df_data %>% summarise(sum_amount = sum(amount), .groups = "drop") %>% arrange(desc(sum_amount)) %>% slice(1:20): 이 코드는 sum() 함수를 사용하여 각 고객의 '금액' 열의 합계를 계산하여 df_data 데이터 프레임을 요약하고 있습니다. 결과 데이터 프레임 df_sum에는 각 고객이 사용한 금액의 합계가 포함되어 있습니다. 그런 다음 이 데이터 프레임을 "sum_amount" 내림차순으로 정렬하고, slice() 함수를 사용하여 결과 데이터 프레임의 처음 20개 행을 선택합니다.

full_join(df_cnt, df_sum, by = "customer_id"): 이 코드는 df_cnt와 df_sum 사이에서 "customer_id" 열을 기준으로 전체 결합 작업을 수행한다. 결과는 두 데이터 프레임에서 "customer_id"와 일치하는 모든 행을 포함하는 새로운 데이터 프레임이 될 것이다. 결과 데이터 프레임에는 판매 날짜가 가장 명확한 상위 20명의 고객과 총 소비 금액이 가장 높은 상위 20명의 고객이 포함된다.

즉, 이 코드의 전체 목적은 고객 데이터에 대한 두 개의 요약 테이블을 가져와 이 두 테이블 간에 완전한 결합 작업을 수행하는 것입니다. 결과 데이터 프레임에는 판매 날짜가 가장 다른 상위 20명의 고객과 총 결제 금액이 가장 높은 상위 20명의 고객이 포함된다.
 
설명:

이 코드는 지난번 설명한 코드와 비슷하지만, arrange() 함수 대신 slice_max() 함수를 사용하여 판매 일수와 구매 금액의 합계에서 상위 20명의 고객을 가져옵니다.

아래는 코드의 내용을 소개합니다.

df_data <- df_receipt %>% filter(!grepl("^Z", customer_id)) %>% group_by(customer_id): 이 코드는 앞의 코드와 마찬가지로 df_receipt 데이터 프레임을 필터링하여 "customer_id" 열이 " customer_id" 열이 "Z"로 시작하는 행을 제외하고 있습니다. 결과적으로 데이터 프레임은 "customer_id" 컬럼으로 그룹화됩니다.

df_cnt <- df_data %>% summarise(come_days = n_distinct(sales_ymd)) %>% slice_max(come_days, n = 20, with_ties = FALSE): 이 코드는 n_distinct() 함수를 사용하여 각 고객의 "sales_ymd" 값의 수를 계산하여 df_data 데이터 프레임을 요약하고 있습니다. 결과 데이터 프레임 df_cnt는 각 고객의 총 고유 판매일 수를 포함하며, slice_max() 함수는 "come_days" 열을 기준으로 상위 20개 행을 선택하는 데 사용됩니다.

df_sum <- df_data %>% summarise(sum_amount = sum(amount)) %>% slice_max(sum_amount, n = 20, with_ties = FALSE): 이 코드는 sum() 함수를 사용하여 각 고객별 "amount" 열의 sum() 함수를 사용하여 각 고객의 "amount" 열의 합계를 계산하여 df_data 데이터 프레임을 요약하고 있습니다. 결과 데이터 프레임 df_sum에는 각 고객이 사용한 금액의 합계가 포함되어 있으며, slice_max() 함수를 사용하여 "sum_amount" 열을 기준으로 상위 20개의 행을 선택하며, with_ties = FALSE는 상위 20개의 서로 다른 값만 선택하도록 지정한다. 것을 지정합니다.

full_join(df_cnt, df_sum, by = "customer_id"): 이 코드는 df_cnt와 df_sum 사이에서 "customer_id" 열을 기준으로 전체 결합 작업을 수행한다. 결과는 두 데이터 프레임에서 "customer_id"로 일치하는 모든 행을 포함하는 새로운 데이터 프레임이 될 것이다. 결과 데이터 프레임에는 판매 날짜가 가장 명확한 상위 20명의 고객과 총 소비 금액이 가장 높은 상위 20명의 고객이 포함된다.

즉, 이 코드의 전체 목적은 고객 데이터에 대한 두 개의 요약 테이블을 가져와 이 두 테이블 간에 완전한 결합 작업을 수행하는 것입니다. 결과 데이터 프레임에는 판매 날짜가 가장 다른 상위 20명의 고객과 총 결제 금액이 가장 높은 상위 20명의 고객이 포함되며, arrange() 함수 대신 slice_max() 함수를 사용하여 가져옵니다.
 
 
설명:

이 코드는 df_store와 df_product 두 데이터 프레임에 추가된 공통 '키' 열을 기반으로 두 데이터 프레임 간의 완전한 결합 처리를 수행한다. 그런 다음 결과 데이터 프레임을 사용하여 nrow() 함수를 사용하여 행 수를 계산합니다.

아래는 코드의 분석이다.

df_store_tmp <- df_store: 이 코드에서는 df_store_tmp라는 새로운 데이터 프레임을 생성하여 df_store 데이터 프레임의 복사본으로 만듭니다. 이는 원래의 데이터 프레임을 변경하지 않기 위함이다.

df_product_tmp <- df_product: 이 코드는 df_product 데이터 프레임의 복사본인 df_product_tmp라는 새로운 데이터 프레임을 생성한다. 이는 원본 데이터 프레임이 변경되지 않도록 하기 위한 것이다.

df_store_tmp["key"] <- 0: 이 코드는 df_store_tmp 데이터 프레임에 "key"라는 새로운 열을 추가하고 모든 값을 0으로 초기화한다. 이 컬럼은 결합 작업을 위한 공통 컬럼을 제공하기 위해 추가됩니다.

df_product_tmp["key"] <- 0: 이 코드는 df_product_tmp 데이터 프레임에 "key"라는 새로운 열을 추가하고 모든 값을 0으로 초기화합니다. 이 컬럼은 결합 작업을 위한 공통 컬럼을 제공하기 위해 추가됩니다.

full_join(df_store_tmp, df_product_tmp, by = "key"). 이 코드는 공통 "key" 열을 기반으로 df_store_tmp와 df_product_tmp 데이터 프레임 간의 전체 결합 작업을 수행한다. 두 데이터 프레임의 모든 행에서 이 열의 값이 동일하므로 완전 결합은 두 데이터 프레임의 데카르트 곱이 되고, df_store_tmp의 모든 행은 df_product_tmp의 모든 행과 짝을 이룬다.

nrow(full_join(df_store_tmp, df_product_tmp, by = "key")): 이 코드는 nrow() 함수를 사용하여 완전 결합 작업에서 얻은 데이터 프레임의 행 수를 계산한다. 결과는 df_store와 df_product 사이의 총 행 조합 수입니다.

요약하면, 이 코드는 df_store와 df_product 데이터 프레임의 복사본을 만들고, 두 데이터 프레임에 공통 "키"열을 추가하여 모든 값을 0으로 설정하고, 공통 "키"열을 기반으로 두 데이터 프레임간에 완전 결합 작업을 수행하여 결과 행 수를 계산합니다. 를 계산한다. 이 코드의 목적은 df_store와 df_product 데이터 프레임 사이의 총 행 조합 수를 결정하는 것이다.
 
 

Comment