Dataframe adalah adalah tabel atau struktur seperti larik dua dimensi di mana setiap kolom berisi nilai dari satu variabel dan setiap baris berisi satu set nilai dari setiap kolom.

Ada beberapa karakteristik dari DataFarme antaralain sebagai berikut :

  1. nama kolom tidak boleh kosong
  2. Nama baris harus unik
  3. Data yang disimpan dalam bingkai data dapat berupa tipe numerik, faktor atau karakter.
  4. Setiap kolom harus berisi jumlah item data yang sama.
# Membuat DataFrame
emp.data <- data.frame(
   emp_id = c (1:5), 
   nama_karyawan = c("Fahri","Dilan","Mirna","Rian","Rahmat"),
   gaji = c(601.3,500.2,850.0,300.0,820.25), 
   
   Tanggal_Masuk = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11",
      "2015-03-27")),
   stringsAsFactors = FALSE
)
# Print data frame.         
print(emp.data) 
##   emp_id nama_karyawan   gaji Tanggal_Masuk
## 1      1         Fahri 601.30    2012-01-01
## 2      2         Dilan 500.20    2013-09-23
## 3      3         Mirna 850.00    2014-11-15
## 4      4          Rian 300.00    2014-05-11
## 5      5        Rahmat 820.25    2015-03-27

Kita bisa melihat Struktur dari dataframe dengan menggunakan kodingan berikut str()

emp.data <- data.frame(
   emp_id = c (1:5), 
   nama_karyawan = c("Fahri","Dilan","Mirna","Rian","Rahmat"),
    gaji = c(601.3,500.2,850.0,300.0,820.25), 
   
   Tanggal_Masuk = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11",
      "2015-03-27")),
   stringsAsFactors = FALSE
)
        
str(emp.data) 
## 'data.frame':    5 obs. of  4 variables:
##  $ emp_id       : int  1 2 3 4 5
##  $ nama_karyawan: chr  "Fahri" "Dilan" "Mirna" "Rian" ...
##  $ gaji         : num  601 500 850 300 820
##  $ Tanggal_Masuk: Date, format: "2012-01-01" "2013-09-23" ...

Dengan menggunakan summary() kita bisa memperoleh Ringkasan statistikny dan juga sifat data

emp.data <- data.frame(
   emp_id = c (1:5), 
   nama_karyawan = c("Fahri","Dilan","Mirna","Rian","Rahmat"),
   gaji = c(601.3,500.2,850.0,300.0,820.25), 
   
   Tanggal_Masuk = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11",
      "2015-03-27")),
   stringsAsFactors = FALSE
)
        
print(summary(emp.data))
##      emp_id  nama_karyawan           gaji       Tanggal_Masuk       
##  Min.   :1   Length:5           Min.   :300.0   Min.   :2012-01-01  
##  1st Qu.:2   Class :character   1st Qu.:500.2   1st Qu.:2013-09-23  
##  Median :3   Mode  :character   Median :601.3   Median :2014-05-11  
##  Mean   :3                      Mean   :614.4   Mean   :2014-01-14  
##  3rd Qu.:4                      3rd Qu.:820.2   3rd Qu.:2014-11-15  
##  Max.   :5                      Max.   :850.0   Max.   :2015-03-27

Kita juga bisa mengekstrak kolom tertentu dari bingkai data menggunakan nama kolom.

emp.data <- data.frame(
   emp_id = c (1:5), 
   nama_karyawan = c("Fahri","Dilan","Mirna","Rian","Rahmat"),
   gaji = c(601.3,500.2,850.0,300.0,820.25), 
   
   Tanggal_Masuk = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11",
      "2015-03-27")),
   stringsAsFactors = FALSE
)
    
result <- data.frame(emp.data$nama_karyawan,emp.data$gaji)
print(result)
##   emp.data.nama_karyawan emp.data.gaji
## 1                  Fahri        601.30
## 2                  Dilan        500.20
## 3                  Mirna        850.00
## 4                   Rian        300.00
## 5                 Rahmat        820.25

Percobaan mengekstrak dua baris pertama dan kemudian semua kolom

emp.data <- data.frame(
   emp_id = c (1:5), 
   nama_karyawan = c("Fahri","Dilan","Mirna","Rian","Rahmat"),
   gaji = c(601.3,500.2,850.0,300.0,820.25), 
   
   Tanggal_Masuk = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11",
      "2015-03-27")),
   stringsAsFactors = FALSE
)
    
result <- emp.data[1:2,]
print(result)
##   emp_id nama_karyawan  gaji Tanggal_Masuk
## 1      1         Fahri 601.3    2012-01-01
## 2      2         Dilan 500.2    2013-09-23
emp.data <- data.frame(
   emp_id = c (1:5), 
   nama_karyawan = c("Fahri","Dilan","Mirna","Rian","Rahmat"),
   gaji = c(601.3,500.2,850.0,300.0,820.25), 
   
   Tanggal_Masuk = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11",
      "2015-03-27")),
   stringsAsFactors = FALSE
)
    
result <- emp.data[c(3,5),c(2,4)]
print(result)
##   nama_karyawan Tanggal_Masuk
## 3         Mirna    2014-11-15
## 5        Rahmat    2015-03-27

Dataframe dapat diperluas dengan menambahkan kolom dan baris.

  1. Menambahkan kolom
emp.data <- data.frame(
   emp_id = c (1:5), 
   nama_karyawan = c("Fahri","Dilan","Mirna","Rian","Rahmat"),
   gaji = c(601.3,500.2,850.0,300.0,820.25), 
   
   Tanggal_Masuk = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11",
      "2015-03-27")),
   stringsAsFactors = FALSE
)
    
emp.data$Posisi <- c("Programmer","Psikolog","Programmer","HR","Pengusaha")
v <- emp.data
print(v)
##   emp_id nama_karyawan   gaji Tanggal_Masuk     Posisi
## 1      1         Fahri 601.30    2012-01-01 Programmer
## 2      2         Dilan 500.20    2013-09-23   Psikolog
## 3      3         Mirna 850.00    2014-11-15 Programmer
## 4      4          Rian 300.00    2014-05-11         HR
## 5      5        Rahmat 820.25    2015-03-27  Pengusaha
  1. Menambahkan baris

Untuk menambahkan lebih banyak baris secara permanen ke bingkai data yang ada, kita perlu memasukkan baris baru dalam struktur yang sama dengan bingkai data yang ada dan menggunakan fungsi rbind().

emp.data <- data.frame(
   emp_id = c(1:5),
   nama_karyawan = c("Fahri", "Dilan", "Mirna", "Rian", "Rahmat"),
   gaji = c(601.3, 500.2, 850.0, 300.0, 820.25),
   Tanggal_Masuk = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11", "2015-03-27")),
   Posisi = c("Programmer", "Psikolog", "Programmer", "HR", "Pengusaha"),
   stringsAsFactors = FALSE
)

emp.newdata <- data.frame(
   emp_id = c(6:8),
   nama_karyawan = c("Rasmi", "Danu", "Deo"),
   gaji = c(570.0, 712.5, 532.8),
   Tanggal_Masuk = as.Date(c("2013-05-21", "2013-07-30", "2014-06-17")),
   Posisi = c("Programmer", "Psikolog", "Programmer"),
   stringsAsFactors = FALSE
)

emp.finaldata <- rbind(emp.data, emp.newdata)
print(emp.finaldata)
##   emp_id nama_karyawan   gaji Tanggal_Masuk     Posisi
## 1      1         Fahri 601.30    2012-01-01 Programmer
## 2      2         Dilan 500.20    2013-09-23   Psikolog
## 3      3         Mirna 850.00    2014-11-15 Programmer
## 4      4          Rian 300.00    2014-05-11         HR
## 5      5        Rahmat 820.25    2015-03-27  Pengusaha
## 6      6         Rasmi 570.00    2013-05-21 Programmer
## 7      7          Danu 712.50    2013-07-30   Psikolog
## 8      8           Deo 532.80    2014-06-17 Programmer

Source : https://www.tutorialspoint.com/r/r_data_frames.htm