Dataframe layaknya sebuah tabel di Ms Excel, terdiri dari baris dan kolom dengan nama masing-masing kolom berbeda. Apa bedanya dengan matriks? Matriks hanya bisa menyimpan tipe data yang sama, numeric atau character seluruhnya. Pada dataframe, masing-masing kolom boleh memiliki tipe data yang berbeda. Dataframe seperti umumnya bentuk tabel yang sering kita gunakan.
Contoh dataframe yang ada di dalam R salah satunya adalah
mtcars.
data.frame(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
## Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
## Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
## Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
## Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
## Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
## Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
## Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
## Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
## Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
## AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
## Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
## Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
Umumnya ketika Anda melakukan analisis data, maka data yang Anda
gunakan adalah berupa tabel. Di dalam R sebuah tabel yang terdiri dari
baris dan kolom disebut dataframe atau data.frame. Baris di
dataframe disebut observation dan kolom disebut
variable
Untuk membuat sebuah dataframe Anda dapat menggunakan
fungsi data.frame(). Misalnya Anda akan membuat sebuah
dataframe bernama data1 yang berisi 5 observation dan 2
variable. Variable pertama bernama x1 berisi sebuah vector
numeric dengan nilai {1, 3, 2, 6, 4} dan variable kedua
bernama v2 berisi vector character dengan nilai {"a", "A",
"c", "d", "E"}. Anda dapat membuat
vector x1 dan v1 terlebih dahulu menggunakan
fungsi c() (atau fungsi lain yang sesuai untuk membuat
vector). Kemudian membuat dataframe dari vector tersebut. Perhatikan
contoh berikut ini.
x1 <- c(1, 3, 2, 6, 4)
v1 <- c("a", "A", "c", "d", "E")
data1 <- data.frame(x1 = x1, v1 = v1)
Anda dapat melihat dataframe yang sudah dibuat tersebut dengan memanggil nama objek dataframe.
data1
## x1 v1
## 1 1 a
## 2 3 A
## 3 2 c
## 4 6 d
## 5 4 E
Perhatian! Ketika Anda membuat sebuah dataframe yang
berisi sebuah variable character pada R dengan versi 3.6.3 atau
sebelumnya, maka secara otomatis variable dari vector character tersebut
akan dirubah menjadi variable factor (2.5).
Hal ini terjadi karena fungsi data.frame() mempunyai sebuah
argumen stringsAsFactors = TRUE. Pada R versi 4.0.0 atau
lebih baru, variable dari vector character akan tetap dijadikan sebuah
variable character karena argumen stringsAsFactors = FALSE.
Tentu saja Anda dapat merubahnya dengan menambahkan argumen tersebut
ketika Anda membuat dataframe.
data1 <- data.frame(x1 = x1, v1 = v1, stringsAsFactors = TRUE) # atau TRUE
data1
## x1 v1
## 1 1 a
## 2 3 A
## 3 2 c
## 4 6 d
## 5 4 E
Untuk mengetahui ukuran dimensi sebuah dataframe Anda dapat gunakan
fungsi dim()
dim(data1)
## [1] 5 2
Hasil dari fungsi dim() untuk dataframe atau matrix
adalah sebuah vector dengan elemen pertama adalah banyaknya observation,
sedangkan elemen kedua adalah banyaknya variable. Pada contoh di atas
berarti dataframe data1 memiliki 5 observation dan 2
variable.
Untuk mengetahui struktur dari sebuah dataframe Anda dapat gunakan
fungsi str() (str-ucture). Dengan fungsi ini Anda
dapat memperoleh informasi lebih lengkap dari sebuah dataframe seperti
banyaknya observation dan variable, nama-nama variable, tipe variable,
dan beberapa nilai baris pertama untuk masing-masing variable.
str(data1)
## 'data.frame': 5 obs. of 2 variables:
## $ x1: num 1 3 2 6 4
## $ v1: Factor w/ 5 levels "a","A","c","d",..: 1 2 3 4 5
Dari hasil di atas Anda dapat ketahui bahwa objek data1
adalah sebuah dataframe berukuran 5 observation (obs.) dan 2 variable.
Nama variable yang ada adalah x1 dan v1.
Variable x1 adalah variable bertipe numeric, sedangkan
v1 adalah variable character alias factor. Nilai pada baris
pertama dataframe data1 untuk variable x1
adalah 1 dan variable v1 adalah "a". Nilai "a" dikodekan
sebagai 1, "A" dikodekan sebagai 2, "c" dikodekan sebagai 3, dan
seterusnya.
Selanjutnya untuk mengambil nilai sebuah variable dari sebuah
dataframe dapat menggunakan tanda dollar ($) atau
menggunakan indeks. Perhatikan contoh berikut.
# Menggunakan tanda dollar
data1$x1
## [1] 1 3 2 6 4
# Menggunakan indeks urutan posisi variable
data1[, 1]
## [1] 1 3 2 6 4
# Menggunakan nama variable pada indeks
data1[, "x1"]
## [1] 1 3 2 6 4
Untuk membuat variable baru Anda dapat menggunakan cara yang hampir
sama dan menggunakan assignment. Berikut ini kita akan membuat
variable baru bernama x2 berupa variable numeric.
data1$x2 <- 1:5
data1
## x1 v1 x2
## 1 1 a 1
## 2 3 A 2
## 3 2 c 3
## 4 6 d 4
## 5 4 E 5
str(data1)
## 'data.frame': 5 obs. of 3 variables:
## $ x1: num 1 3 2 6 4
## $ v1: Factor w/ 5 levels "a","A","c","d",..: 1 2 3 4 5
## $ x2: int 1 2 3 4 5
Tipe num artinya variable tersebut adalah double dan
tipe int adalah tipe integer.
Kemudian kita buat variable baru bernama x3 yang
merupakan penjumlahan dari variable x1 dan
x2.
data1$x3 <- data1$x1 + data1$x2
str(data1)
## 'data.frame': 5 obs. of 4 variables:
## $ x1: num 1 3 2 6 4
## $ v1: Factor w/ 5 levels "a","A","c","d",..: 1 2 3 4 5
## $ x2: int 1 2 3 4 5
## $ x3: num 2 5 5 10 9