Dize Sütunları için separate() ve unite()
Birden fazla bilgi parçası içeren sütun değerlerini bölün ve birleştirin.
Dize Sütunları için separate() ve unite(), CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.
Dize Sütunlarını Bölme ve Birleştirme
Ham verilerde çoğu zaman tek bir sütuna sıkıştırılmış birden çok bilgi parçası bulunur (örneğin '2024-03-15' yıl, ay ve günü içerir). tidyr paketinin separate() ve unite() işlevleri, bir sütunu birden çok sütuna böler veya birden çok sütunu tek sütunda birleştirir.
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() — Bir Sütunu Birçok Sütuna Bölme
separate(df, col, into, sep), bir karakter sütununu bir ayırıcı kullanarak birden çok yeni sütuna böler. into bağımsız değişkeni yeni sütunları adlandırır; sep ise sınırlayıcıdır (varsayılan: alfasayısal olmayan herhangi bir karakter).
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 = '-'
)convert Bağımsız Değeriyle separate()
Varsayılan olarak separate() karakter sütunları oluşturur. Yeni sütunları en uygun türe (tamsayı, sayısal veya mantıksal) otomatik olarak dönüştürmek için convert = TRUE ayarlayın. Bu özellik özellikle yıl ve ay sütunları için kullanışlıdır.
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))remove = FALSE ile separate()
Varsayılan olarak separate() özgün sütunu kaldırır. Yeni bölünmüş sütunların yanında özgün sütunu da korumak için remove = FALSE ayarlayın. Bu, bölme işlemini doğrulamak veya özgün sütunu başvuru amacıyla saklamak istediğinizde kullanışlıdır.
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
)Sabit Konumlarda separate()
Bir sınırlayıcı kullanmak yerine sep öğesine bir tamsayı vektörü geçirerek sabit karakter konumlarında bölebilirsiniz. Pozitif tamsayılar soldan, negatif tamsayılar sağdan sayar.
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() — Sütunları Tek Sütunda Birleştirme
unite(df, col, ..., sep), birden çok sütunu tek bir karakter sütununda birleştirir. df sonrasındaki ilk bağımsız değişken yeni sütunun adıdır; ardından birleştirilecek sütunlar ve ayırıcı dize gelir.
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 = ' '
)remove = FALSE ile unite()
separate() gibi unite() da varsayılan olarak kaynak sütunları kaldırır. Özgün sütunları yeni birleştirilmiş sütunun yanında korumak için remove = FALSE ayarlayın. Her iki biçime de ihtiyaç duyduğunuzda bu seçenek kullanışlıdır.
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
)Anahtar Oluşturmak için unite()
unite() işlevinin yaygın bir kullanımı, birden çok tanımlayıcı sütununu birleştirerek bileşik anahtarlar oluşturmaktır. Bu, birden çok alandan oluşturulmuş ortak bir anahtara ihtiyaç duyan tabloları birleştirmeden önce kullanışlıdır.
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() — Birden Çok Satıra Bölme
separate_rows(df, col, sep), birden çok değer içeren bir hücreyi ayrı satırlara böler. Bu işlem, sütunlara bölen separate() işlevinden farklıdır. Bir hücre virgülle ayrılmış öğeler listesi içerdiğinde kullanışlıdır.
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() ve unite() İşlevlerini Zincirleme
Tarih dizelerini yeniden biçimlendirmek, tutarsız biçimleri düzeltmek veya mevcut sütunlardan yeni bileşik tanımlayıcılar oluşturmak için bir işlem hattında separate() ve unite() işlevlerini zincirleyebilirsiniz.
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='/')Ek veya Eksik Parçaları Ele Alma
separate() işlevinde, into sütunlarından daha fazla parça olduğunda kullanılacak bir extra bağımsız değişkeni bulunur: 'warn' (varsayılan), 'drop' (fazlalıkları atar) veya 'merge' (son parçayı bölmeden korur). Benzer şekilde fill, daha az parça olduğunda 'warn', 'right' veya 'left' değerleriyle işlem yapar.
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')Kısa Kontrol
'tag1,tag2,tag3' gibi virgülle ayrılmış değerler içeren bir sütunu, her etiket için bir satır olacak şekilde bölmek için hangi işlevi kullanırsınız?
Özet: separate() ve unite()
separate() ve unite() için temel çıkarımlar:
separate(col, into, sep)— bir sütunu sınırlayıcıya veya konuma göre birden çok sütuna bölerconvert = TRUE— bölme sonuçlarının türünü otomatik olarak dönüştürürremove = FALSE— her iki işlevde de özgün sütunu korurunite(col, ..., sep)— birden çok sütunu tek bir dize sütununda birleştirirseparate_rows(col, sep)— sınırlayıcılarla ayrılmış değerleri sütunlara değil, birden çok satıra bölerextravefillbağımsız değişkenleri tutarsız bölme sonuçlarını ele alır
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)Sıkça Sorulan Sorular
“Dize Sütunları için separate() ve unite()” dersi ücretsiz mi?
Evet — “Dize Sütunları için separate() ve unite()” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.
“Dize Sütunları için separate() ve unite()” dersinde ne öğreneceğim?
Birden fazla bilgi parçası içeren sütun değerlerini bölün ve birleştirin. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
R Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Dize Sütunları için separate() ve unite()” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu R Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- pivot_longer() ile Genişten Uzuna
- pivot_wider() ile Uzundan Genişe
- Dize Sütunları için separate() ve unite()
- Veri Çerçevelerini İç İçe Alma ve Çözme