Part 3 — Struktur Data II: Data Frame

Membuat data frame, akses kolom & baris, dimensi, struktur, dan operasi dasar di R.
Fundamental
Struktur Data
Diterbitkan

26 Februari 2026

Fundamental Series — Part 3 of 20

Data frame adalah struktur data paling penting untuk analisis data di R. Bayangkan spreadsheet: baris = observasi, kolom = variabel. Part ini membahas cara membuat, mengakses, dan memanipulasi data frame.


Membuat Data Frame

df <- data.frame(
  kota = c("Jakarta", "Bandung", "Surabaya", "Medan", "Makassar"),
  populasi = c(10.56, 2.44, 2.87, 2.12, 1.42),
  pulau = c("Jawa", "Jawa", "Jawa", "Sumatera", "Sulawesi")
)

df
      kota populasi    pulau
1  Jakarta    10.56     Jawa
2  Bandung     2.44     Jawa
3 Surabaya     2.87     Jawa
4    Medan     2.12 Sumatera
5 Makassar     1.42 Sulawesi
Catatandata.frame vs tibble

tibble (dari tidyverse) adalah versi modern data frame — tampilan lebih rapi, tidak otomatis konversi string ke factor. Kamu akan sering bertemu keduanya:

library(tibble)
df <- tibble(
  kota = c("Jakarta", "Bandung"),
  populasi = c(10.56, 2.44)
)

Memeriksa Struktur

# Dimensi
nrow(df)       # 5 (jumlah baris)
ncol(df)       # 3 (jumlah kolom)
dim(df)        # 5 3

# Struktur — tipe data setiap kolom
str(df)

# Nama kolom
names(df)      # "kota" "populasi" "pulau"
colnames(df)   # sama

# Beberapa baris pertama / terakhir
head(df, 3)
tail(df, 2)

Output str():

'data.frame':   5 obs. of  3 variables:
 $ kota    : chr  "Jakarta" "Bandung" "Surabaya" "Medan" ...
 $ populasi: num  10.56 2.44 2.87 2.12 1.42
 $ pulau   : chr  "Jawa" "Jawa" "Jawa" "Sumatera" ...

str() sangat berguna — langsung terlihat jumlah observasi, variabel, tipe data, dan contoh isinya.


Mengakses Kolom

# Dengan $
df$kota           # vektor character
df$populasi       # vektor numeric

# Dengan [[ ]]
df[["kota"]]      # sama dengan df$kota

# Dengan [ ] — mengembalikan data frame (1 kolom)
df["kota"]        # data frame, bukan vektor!
Penting$ vs [[ ]] vs [ ]
Sintaks Return Tipe
df$kota Vektor Isi kolom
df[["kota"]] Vektor Isi kolom
df["kota"] Data frame Sub-tabel 1 kolom

Mengakses Baris & Sel

# [baris, kolom]
df[1, ]          # baris pertama (semua kolom)
df[, 2]          # kolom kedua (semua baris)
df[1, 2]         # sel: baris 1, kolom 2 → 10.56

# Beberapa baris
df[1:3, ]        # baris 1 sampai 3
df[c(1, 4), ]    # baris 1 dan 4

# Kombinasi
df[1:3, c("kota", "populasi")]

Filter Baris dengan Kondisi

# Kota di Pulau Jawa
df[df$pulau == "Jawa", ]

# Populasi > 2.5 juta
df[df$populasi > 2.5, ]

# Kombinasi kondisi
df[df$pulau == "Jawa" & df$populasi > 3, ]

Menambah & Mengubah Kolom

# Tambah kolom baru
df$luas <- c(661.5, 167.7, 350.5, 265.1, 175.8)

# Buat kolom dari perhitungan
df$kepadatan <- df$populasi / df$luas * 1e6

# Ubah kolom yang ada
df$populasi <- df$populasi * 1e6   # konversi ke satuan jiwa

Menghapus Kolom

# Set ke NULL
df$kepadatan <- NULL

# Atau select kolom yang diinginkan
df <- df[, c("kota", "populasi", "pulau")]

Menambah Baris

baris_baru <- data.frame(
  kota = "Semarang",
  populasi = 1.65,
  pulau = "Jawa"
)

df <- rbind(df, baris_baru)

Dataset Bawaan R

R menyediakan banyak dataset bawaan untuk belajar:

# Lihat daftar dataset tersedia
data()

# Load dataset
data(mtcars)
data(iris)

# Langsung pakai
head(mtcars)
str(iris)
TipDataset Populer untuk Belajar
Dataset Isi Paket
mtcars Spesifikasi 32 mobil base R
iris Ukuran bunga 3 spesies base R
economics Data ekonomi AS ggplot2
gapminder GDP & harapan hidup negara gapminder

Latihan

BahayaLatihan 3.1 — Buat Data Frame
# Buat data frame "provinsi" dengan kolom:
# - nama: 5 nama provinsi
# - ibukota: 5 nama ibukota
# - populasi: 5 angka populasi (juta jiwa)
# - pulau: 5 nama pulau

# 1. Tampilkan struktur data frame (str)
# 2. Berapa dimensinya?
# 3. Tampilkan hanya kolom nama dan populasi
BahayaLatihan 3.2 — Akses & Filter
data(mtcars)

# 1. Berapa jumlah baris dan kolom?
# 2. Tampilkan 5 baris pertama
# 3. Tampilkan kolom mpg dan hp saja
# 4. Filter: mobil dengan mpg > 25
# 5. Filter: mobil dengan cyl == 4 DAN hp > 90
BahayaLatihan 3.3 — Modifikasi
data(mtcars)

# 1. Tambahkan kolom kpl = mpg * 0.425 (konversi ke km/liter)
# 2. Tambahkan kolom kategori = "irit" jika kpl > 10, "boros" jika tidak
#    (hint: ifelse())
# 3. Berapa jumlah mobil irit vs boros?
#    (hint: table())

Ringkasan

Konsep Keterangan
data.frame() Buat data frame
str() Lihat struktur (tipe, contoh data)
dim(), nrow(), ncol() Dimensi
df$kolom Akses kolom → vektor
df[baris, kolom] Akses sel / subset
df[kondisi, ] Filter baris
df$baru <- ... Tambah / ubah kolom
rbind() Tambah baris
head(), tail() Lihat awal / akhir

Sebelumnya: Part 2 — Vektor & List Selanjutnya: Part 4 — Operator & Ekspresi