
MENCARI NILAI FREKUENSI DATA KATEGORIK PADA DATA FRAME DENGAN MENGGUNAKAN R studio
MENCARI NILAI FREKUENSI DATA KATEGORIK PADA DATA FRAME DENGAN MENGGUNAKAN R studio
Penulis: Sabil
Tabel distribusi frekuensi dibuat untuk mengetahui frekuensi dari sekumpulan data kategorik. Jika data kita berupa data frame maka kita harus memperhatikan jenis data yang berada dalam data frame tersebut. Apakah berupa data string atau numerik (kategori numerik). Dengan menggunakan software R ada beberapa cara untuk mendapatkan nilai frekuensi dari sekumpulan data kategorik.
- Cara pertama dapat menggunakan function table()
data1=c(‘v’,’a’,’a’,’a’,’x’,’x’,’a’,’o’)
data2=c(‘a’,’a’,’v’,’v’,’x’,’x’,’x’,’o’)
data3=c(1,2,3,4,4,4,2,2)
data=as.data.frame(cbind(data1,data2,data3))
> f1=table(data[,1])
> f1
a o v x
4 1 1 2
> class(f1)
[1] "table"
Untuk merapikannya bisa digunakan as.data.frame()
> f1 = as.data.frame(f1)
> f1
Var1 Freq
1 a 4
2 o 1
3 v 1
4 x 2
Untuk merubah nama Var1 dapat menggunakan function names()
> names(f1)[1]='data1'> f1 data1 Freq
1 a 4
2 o 1
3 v 1
4 x 2
> f2=table(data[,2])
> f3=table(data[,3])
> f2
a o v x
2 1 2 3
> f3
1 2 3 4
1 3 1 3
Namun cara prtama ini hanya bisa memanggil satu-satu kolom untuk mencari frekuensi dari masing-masing variabel.
2. Cara kedua dapat menggunakan function table() dan apply()
Contoh 1
data1=c(‘v’,’a’,’a’,’a’,’x’,’x’,’a’,’o’)
data2=c(‘a’,’a’,’v’,’v’,’x’,’x’,’x’,’o’)
data=as.data.frame(cbind(data1,data2))
> frequenc = apply(data,2, table)
> frequenc
data1 data2
a 4 2
o 1 1
v 1 2
x 2 3
Jika data yang digunakan tidak memiliki kategori yang sama maka dengan menggunakan cara ini dengan otomatis memisahkan hasilnya, sehingga tidak seperti tampilan pada contoh 1, berikut contohnya
Contoh 2
Data3=c(‘v’,’a’,’a’,’a’,’x’,’x’,’a’,’o’)
Data4=c(‘a’,’a’,’v’,’v’,’x’,’x’,’x’,’x’)
datax=as.data.frame(cbind(data3,data4))
> frequenc = apply(datax,2, table)
> frequenc
$data3
a o v x
4 1 1 2
$data4
a v x
2 2 4
3. Cara ketiga menggunakan function table() ,summary() dan lapply()
data1=c(‘v’,’a’,’a’,’a’,’x’,’x’,’a’,’o’)
data2=c(‘a’,’a’,’v’,’v’,’x’,’x’,’x’,’o’)
data3=c(1,2,3,4,4,4,2,2)
data=as.data.frame(cbind(data1,data2,data3))
> lapply(data, function(x) {
if (is.numeric(x)) return(summary(x))
if (is.factor(x)) return(table(x))
})
$`data1`
x
a o v x
4 1 1 2
$data2
x
a o v x
2 1 2 3
$data3
x
1 2 3 4
1 3 1 3
4. Cara keempat menggunakan function count() pada package plyr dan apply()
> library(plyr)
> ds <- matrix(c(sample(1:3,6,replace=T),
sample(4:6,6,replace=T)),ncol=2)
> ds
[,1] [,2]
[1,] 3 5
[2,] 2 6
[3,] 1 6
[4,] 2 4
[5,] 3 5
[6,] 2 6
> apply(ds,2,count)
[[1]]
x freq
1 1 1
2 2 3
3 3 2
[[2]]
x freq
1 4 1
2 5 2
3 6 3
Menggabungkan data dengan data string
> ds <- matrix(c(sample(1:3,6,replace=T),
sample(4:6,6,replace=T)),ncol=2)
> data3=c('a','a','v','v','x','x')
> cc=as.data.frame(cbind(ds,data3))
> cc
V1 V2 data3
1 3 5 a
2 2 6 a
3 1 6 v
4 2 4 v
5 3 5 x
6 2 6 x
> apply(cc,2,count)
$`V1`
x freq
1 1 1
2 2 3
3 3 2
$V2
x freq
1 4 1
2 5 2
3 6 3
$data3
x freq
1 a 2
2 v 2
3 x 2
5. Cara kelima membuat function dengan gabungan package dplyr
library(dplyr)
b=function(x){
panjangcol=ncol(x)
for (i in 1:panjangcol) {
dd=x %>%
group_by(x[,i]) %>%
tally
print(as.data.frame(dd))
flush.console()
}
}
data1=c(‘v’,’a’,’a’,’a’,’x’,’x’,’a’,’o’)
data2=c(‘a’,’a’,’v’,’v’,’x’,’x’,’x’,’x’)
data=as.data.frame(cbind(data1,data2))
> b(data)
x[, i] n
1 a 4
2 o 1
3 v 1
4 x 2
x[, i] n
1 a 2
2 v 2
3 x 4
Namun cara lima hanya untuk data string.
Sekian dan Terima kasih jika ada saran dan masukan sangat penulis harapkan
Sumber: