0Pricing
R Academy · 강의

문자열 열을 위한 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. pivot_longer()로 넓은 형식에서 긴 형식으로
  2. pivot_wider()로 긴 형식에서 넓은 형식으로
  3. 문자열 열을 위한 separate()와 unite()
  4. 데이터 프레임 중첩 및 중첩 해제
← R Academy(으)로 돌아가기