문자열 열을 위한 separate()와 unite()
여러 정보 조각을 포함한 열 값을 분할하고 병합합니다.
문자열 열을 위한 separate()와 unite()은(는) CoddyKit의 무료 R Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 R Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. R Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
문자열 열 분할 및 결합
원시 데이터에는 여러 정보가 하나의 열에 뒤섞여 있는 경우가 많습니다(예: '2024-03-15'에는 연도, 월, 일이 들어 있습니다). tidyr의 separate()와 unite() 함수는 하나의 열을 여러 열로 나누거나 여러 열을 하나로 결합합니다.
library(tidyr)
# Date stored as a single string column
df <- data.frame(
id = 1:4,
date = c('2024-01-15','2024-03-22','2023-11-08','2024-06-30'),
value = c(100, 200, 150, 175)
)
print(df)separate() — 하나의 열을 여러 열로 분할
separate(df, col, into, sep)는 구분 기호를 사용하여 문자 열을 여러 새 열로 나눕니다. into 인수는 새 열의 이름을 지정하고, sep은 구분 기호를 지정합니다(기본값: 영숫자가 아닌 모든 문자).
library(tidyr)
df <- data.frame(
id = 1:4,
date = c('2024-01-15','2024-03-22','2023-11-08','2024-06-30')
)
# Split 'date' into year, month, day
separate(
df,
col = date,
into = c('year','month','day'),
sep = '-'
)separate()와 convert 인수
기본적으로 separate()는 문자 열을 만듭니다. convert = TRUE로 설정하면 새 열을 가장 적절한 형식(정수, 숫자, 논리형)으로 자동 변환합니다. 연도와 월 열을 처리할 때 특히 유용합니다.
library(tidyr)
df <- data.frame(
event = c('2024-1','2024-2','2023-12'),
score = c(85, 90, 78)
)
result <- separate(
df,
col = event,
into = c('year','month'),
sep = '-',
convert = TRUE
)
print(result)
cat('year type:', class(result$year), '\n')
cat('month type:', class(result$month))separate()와 remove = FALSE
기본적으로 separate()는 원래 열을 제거합니다. remove = FALSE로 설정하면 새로 분할된 열과 함께 원래 열도 유지됩니다. 분할 결과를 확인하거나 원래 값을 참조용으로 보관하고 싶을 때 유용합니다.
library(tidyr)
df <- data.frame(
full_code = c('US-CA-001','US-TX-002','UK-LDN-003')
)
separate(
df,
col = full_code,
into = c('country','state','code'),
sep = '-',
remove = FALSE # Keep original column
)separate()로 고정 위치에서 분할
구분 기호 대신 sep에 정수 벡터를 전달하여 문자의 고정된 위치에서 나눌 수 있습니다. 양의 정수는 왼쪽부터 세고, 음의 정수는 오른쪽부터 셉니다.
library(tidyr)
# Product code: first 3 chars = category, next 4 = id
df <- data.frame(
code = c('ABC1234','XYZ5678','DEF9012'),
qty = c(10, 20, 15)
)
separate(
df,
col = code,
into = c('category','product_id'),
sep = 3 # Split after position 3
)unite() — 여러 열을 하나로 결합
unite(df, col, ..., sep)는 여러 열을 하나의 문자 열로 결합합니다. df 뒤의 첫 번째 인수는 새 열 이름이고, 그 다음에 결합할 열과 구분 문자열이 옵니다.
library(tidyr)
df <- data.frame(
first = c('Alice','Bob','Carol'),
last = c('Smith','Jones','White'),
score = c(85, 90, 78)
)
unite(
df,
col = 'full_name',
first, last,
sep = ' '
)unite()와 remove = FALSE
separate()와 마찬가지로 unite()는 기본적으로 원본 열을 제거합니다. remove = FALSE로 설정하면 새로 결합된 열과 함께 원본 열도 유지됩니다. 두 형식이 모두 필요할 때 유용합니다.
library(tidyr)
df <- data.frame(
year = c(2024, 2024, 2023),
month = c(1, 3, 12),
day = c(15, 22, 8)
)
unite(
df,
col = 'date_str',
year, month, day,
sep = '-',
remove = FALSE
)unite()로 키 만들기
unite()의 일반적인 사용 사례는 여러 식별자 열을 결합하여 복합 키를 만드는 것입니다. 여러 필드로 구성된 공통 키가 필요한 표를 결합하기 전에 유용하게 사용할 수 있습니다.
library(tidyr)
library(dplyr)
orders <- data.frame(
year = c(2024, 2024, 2023),
region = c('East','West','East'),
seq_num = c(1, 1, 2)
)
orders_keyed <- orders %>%
unite(col = 'order_key', year, region, seq_num, sep = '_')
print(orders_keyed)separate_rows() — 여러 행으로 분할
separate_rows(df, col, sep)는 여러 값이 들어 있는 셀을 각각의 행으로 나눕니다. 열로 나누는 separate()와는 다릅니다. 셀에 쉼표로 구분된 항목 목록이 들어 있을 때 유용합니다.
library(tidyr)
# Tags stored as comma-separated values in one cell
df <- data.frame(
id = 1:3,
title = c('Intro to R','Data Viz','ML Basics'),
tags = c('r,beginner','r,ggplot,visualization','r,ml,modeling')
)
separate_rows(df, tags, sep = ',')separate()와 unite() 연결
separate()와 unite()를 파이프라인에서 연결하여 날짜 문자열의 형식을 바꾸거나, 일관되지 않은 형식을 수정하거나, 기존 열에서 새로운 복합 식별자를 만들 수 있습니다.
library(tidyr)
library(dplyr)
# Reformat date from YYYY-MM-DD to DD/MM/YYYY
df <- data.frame(
id = 1:3,
date = c('2024-01-15','2024-03-22','2023-11-08')
)
df %>%
separate(date, into=c('year','month','day'), sep='-') %>%
unite(col='date_eu', day, month, year, sep='/')추가되거나 누락된 부분 처리
separate()에는 into 열보다 분할된 부분이 많을 때 사용하는 extra 인수가 있습니다: 'warn'(기본값), 'drop'(추가 부분 삭제), 'merge'(마지막 부분을 분할하지 않고 유지). 이와 비슷하게 fill은 부분이 부족할 때 사용하며, 값으로 'warn', 'right', 'left'를 지정할 수 있습니다.
library(tidyr)
# Inconsistent data: some rows have 2 parts, some have 3
df <- data.frame(
code = c('A-1','B-2-extra','C-3'),
value = c(10, 20, 30)
)
# 'merge' keeps the last piece unsplit
separate(df, code, into=c('prefix','suffix'), sep='-',
extra='merge')빠른 확인
'tag1,tag2,tag3'처럼 열에 쉼표로 구분된 값이 있을 때 각 태그가 한 행씩 되도록 분할하려면 어떤 함수를 사용해야 합니까?
복습: separate()와 unite()
separate()와 unite()의 핵심 내용:
separate(col, into, sep)— 구분 기호나 위치를 기준으로 하나의 열을 여러 열로 분할합니다convert = TRUE— 분할 결과의 형식을 자동으로 변환합니다remove = FALSE— 두 함수에서 원래 열을 유지합니다unite(col, ..., sep)— 여러 열을 하나의 문자열 열로 결합합니다separate_rows(col, sep)— 구분된 값을 여러 행으로 분할합니다(열이 아님)extra와fill인수는 일관되지 않은 분할 결과를 처리합니다
library(tidyr)
library(dplyr)
df <- data.frame(
id = 1:3,
datetime = c('2024-01-15 09:30','2024-03-22 14:15','2023-11-08 11:45')
)
df %>%
separate(datetime, into=c('date','time'), sep=' ') %>%
separate(date, into=c('year','month','day'), sep='-', convert=TRUE) %>%
separate(time, into=c('hour','minute'), sep=':', convert=TRUE)자주 묻는 질문
“문자열 열을 위한 separate()와 unite()” 강의는 무료인가요?
네 — “문자열 열을 위한 separate()와 unite()” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 R Academy 강의 전체를 잠금 해제할 수 있습니다. R Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“문자열 열을 위한 separate()와 unite()”에서 뭘 배우나요?
여러 정보 조각을 포함한 열 값을 분할하고 병합합니다. 브라우저에서 직접 실행하는 실습 코드로 R Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
R Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 R Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“문자열 열을 위한 separate()와 unite()” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 R Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 R Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- pivot_longer()로 넓은 형식에서 긴 형식으로
- pivot_wider()로 긴 형식에서 넓은 형식으로
- 문자열 열을 위한 separate()와 unite()
- 데이터 프레임 중첩 및 중첩 해제