R Academy · Pelajaran

separate() dan unite() untuk Kolom String

Pisahkan dan gabungkan nilai kolom yang berisi beberapa bagian informasi.

Pelajaran 3 dari 413 langkah

separate() dan unite() untuk Kolom String adalah pelajaran R Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar R Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus R Academy mencakup 4 pelajaran total.

Memisahkan dan Menggabungkan Kolom String

Data mentah sering kali memiliki beberapa bagian informasi yang dijejalkan ke dalam satu kolom (misalnya, '2024-03-15' berisi tahun, bulan, dan hari). Fungsi separate() dan unite() dari tidyr memisahkan satu kolom menjadi banyak kolom, atau menggabungkan banyak kolom menjadi satu.

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() — Memisahkan Satu Kolom Menjadi Banyak Kolom

separate(df, col, into, sep) memisahkan kolom karakter menjadi beberapa kolom baru menggunakan pemisah. Argumen into memberi nama kolom baru; sep adalah pembatasnya (bawaan: karakter apa pun yang bukan alfanumerik).

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() dengan Argumen convert

Secara bawaan, separate() membuat kolom karakter. Atur convert = TRUE untuk secara otomatis mengonversi kolom baru ke tipe yang paling sesuai (integer, numerik, logika). Ini sangat berguna untuk kolom tahun dan bulan.

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() dengan remove = FALSE

Secara bawaan, separate() menghapus kolom asli. Atur remove = FALSE untuk mempertahankannya bersama kolom hasil pemisahan. Ini berguna ketika Anda ingin memeriksa hasil pemisahan atau menyimpan kolom asli sebagai referensi.

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() pada Posisi Tetap

Alih-alih menggunakan pembatas, Anda dapat memisahkan pada posisi karakter yang tetap dengan meneruskan vektor integer ke sep. Bilangan bulat positif dihitung dari kiri; bilangan bulat negatif dihitung dari kanan.

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() — Menggabungkan Kolom Menjadi Satu

unite(df, col, ..., sep) menggabungkan beberapa kolom menjadi satu kolom karakter. Argumen pertama setelah df adalah nama kolom baru, diikuti kolom-kolom yang akan digabungkan, lalu string pemisahnya.

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() dengan remove = FALSE

Seperti separate(), unite() secara bawaan menghapus kolom sumber. Atur remove = FALSE untuk mempertahankan kolom asli bersama kolom gabungan yang baru. Ini berguna ketika Anda memerlukan kedua bentuk tersebut.

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() untuk Membuat Kunci

Salah satu penggunaan umum unite() adalah membuat kunci gabungan dengan mengombinasikan beberapa kolom pengenal. Ini berguna sebelum menggabungkan tabel yang memerlukan kunci bersama yang dibentuk dari beberapa bidang.

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() — Memisahkan Menjadi Beberapa Baris

separate_rows(df, col, sep) memisahkan sel yang berisi beberapa nilai menjadi baris-baris terpisah. Ini berbeda dari separate(), yang memisahkan menjadi kolom. Fungsi ini berguna ketika sebuah sel berisi daftar item yang dipisahkan koma.

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 = ',')

Merangkai separate() dan unite()

Anda dapat merangkai separate() dan unite() dalam sebuah pipeline untuk memformat ulang string tanggal, memperbaiki format yang tidak konsisten, atau membuat pengenal gabungan baru dari kolom yang sudah ada.

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='/')

Menangani Bagian Tambahan atau yang Hilang

separate() memiliki argumen extra untuk situasi ketika jumlah bagian lebih banyak daripada kolom into: 'warn' (bawaan), 'drop' (membuang bagian tambahan), atau 'merge' (mempertahankan bagian terakhir tanpa memisahkannya). Demikian pula, fill menangani jumlah bagian yang lebih sedikit: 'warn', 'right', atau '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')

Pemeriksaan Singkat

Fungsi apa yang akan Anda gunakan untuk memisahkan baris ketika sebuah kolom berisi nilai yang dipisahkan koma seperti 'tag1,tag2,tag3' menjadi satu baris untuk setiap tag?

Ringkasan: separate() dan unite()

Hal-hal penting untuk separate() dan unite():

  • separate(col, into, sep) — memisahkan satu kolom menjadi beberapa kolom berdasarkan pembatas atau posisi
  • convert = TRUE — secara otomatis mengonversi tipe hasil pemisahan
  • remove = FALSE — mempertahankan kolom asli pada kedua fungsi
  • unite(col, ..., sep) — menggabungkan beberapa kolom menjadi satu kolom string
  • separate_rows(col, sep) — memisahkan nilai berbatas menjadi beberapa baris (bukan kolom)
  • Argumen extra dan fill menangani hasil pemisahan yang tidak konsisten
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)
Gratis untuk memulai

Belajar R dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
43
Pelajaran
159

Pertanyaan yang Sering Diajukan

Apakah pelajaran “separate() dan unite() untuk Kolom String” gratis?

Ya — teks lengkap “separate() dan unite() untuk Kolom String” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus R Academy, upgrade ke CoddyKit PRO. Kursus R Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “separate() dan unite() untuk Kolom String”?

Pisahkan dan gabungkan nilai kolom yang berisi beberapa bagian informasi. Kamu berlatih R Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai R Academy?

Tidak diperlukan pengalaman sebelumnya. R Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “separate() dan unite() untuk Kolom String” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran R Academy ini?

Ya. Setiap pelajaran R Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Dari Format Lebar ke Panjang dengan pivot_longer()
  2. Dari Format Panjang ke Lebar dengan pivot_wider()
  3. separate() dan unite() untuk Kolom String
  4. Menyarangkan dan Membuka Sarang Data Frame
← Kembali ke R Academy