Hãy bắt đầu bằng cách tạo một số dữ liệu giả.
software = sample(c("Windows","Linux","Mac"), n=100, replace=T)
salary = runif(n=100,min=1,max=100)
test = data.frame(software, salary)
Điều này sẽ tạo ra một khung dữ test
liệu sẽ trông giống như:
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 dựa trên nhận xét Lưu ý rằng nếu dữ liệu chưa tồn tại ở định dạng trên, nó có thể được thay đổi thành định dạng này. Chúng ta hãy lấy một khung dữ liệu được cung cấp trong câu hỏi ban đầu và giả sử khung dữ liệu được gọi 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
Bây giờ, bằng cách sử dụng melt
hàm / phương thức từ reshape
gói trong R
, trước tiên hãy tạo khung dữ liệu test
(sẽ được sử dụng cho âm mưu cuối cùng) như sau:
# 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"
Bây giờ, bạn sẽ nhận được một khung dữ test
liệu trông giống như:
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
Có tạo tập dữ liệu. Bây giờ chúng ta sẽ tạo ra cốt truyện.
Đầu tiên, tạo biểu đồ thanh bên trái dựa trên số lượng phần mềm thể hiện tốc độ sử dụng.
p1 <- ggplot(test, aes(factor(software))) + geom_bar() + coord_flip()
Tiếp theo, tạo boxplot bên phải.
p2 <- ggplot(test, aes(factor(software), salary)) + geom_boxplot() + coord_flip()
Cuối cùng, đặt cả hai lô này cạnh nhau.
require('gridExtra')
grid.arrange(p1,p2,nrow=1)
Điều này sẽ tạo ra một cốt truyện như: