Mari kita mulai dengan membuat beberapa dataset palsu.
software = sample(c("Windows","Linux","Mac"), n=100, replace=T)
salary = runif(n=100,min=1,max=100)
test = data.frame(software, salary)
Ini akan membuat kerangka data test
yang akan terlihat seperti:
software salary
1 Windows 96.697217
2 Linux 29.770905
3 Windows 94.249612
4 Mac 71.188701
5 Linux 94.028326
6 Linux 7.482632
7 Mac 98.841689
8 Mac 81.152623
9 Windows 54.073761
10 Windows 1.707829
EDIT berdasarkan komentar. Perhatikan bahwa jika data belum ada dalam format di atas, dapat diubah ke format ini. Mari kita ambil kerangka data yang disediakan dalam pertanyaan awal dan mari kita asumsikan kerangka data dipanggil raw_test
.
windows sql excel salary
1 yes no yes 100
2 no yes yes 200
3 yes no yes 300
4 yes no no 400
5 no no yes 500
Sekarang, dengan menggunakan melt
fungsi / metode dari reshape
paket R
, pertama-tama buat frame data test
(yang akan digunakan untuk plot akhir) sebagai berikut:
# use melt to convert from wide to long format
test = melt(raw_test,id.vars=c("salary"))
# subset to only select where value is "yes"
test = subset(test, value == 'yes')
# replace column name from "variable" to "software"
names(test)[2] = "software"
Sekarang, Anda akan mendapatkan bingkai data test
yang terlihat seperti:
salary software value
1 100 windows yes
3 300 windows yes
4 400 windows yes
7 200 sql yes
11 100 excel yes
12 200 excel yes
13 300 excel yes
15 500 excel yes
Setelah membuat dataset. Kami sekarang akan menghasilkan plot.
Pertama, buat plot bar di sebelah kiri berdasarkan jumlah perangkat lunak yang mewakili tingkat penggunaan.
p1 <- ggplot(test, aes(factor(software))) + geom_bar() + coord_flip()
Selanjutnya, buat boxplot di sebelah kanan.
p2 <- ggplot(test, aes(factor(software), salary)) + geom_boxplot() + coord_flip()
Akhirnya, tempatkan kedua plot ini bersebelahan.
require('gridExtra')
grid.arrange(p1,p2,nrow=1)
Ini harus membuat plot seperti: