hình dung một âm mưu hộp ngang trong R


8

Tôi có một bộ dữ liệu như thế này. Dữ liệu đã được thu thập thông qua bảng câu hỏi và tôi sẽ thực hiện một số phân tích dữ liệu thăm dò.

windows <- c("yes", "no","yes","yes","no")
sql     <- c("no","yes","no","no","no")
excel  <- c("yes","yes","yes","no","yes")
salary <- c(100,200,300,400,500 )

test<- as.data.frame (cbind(windows,sql,excel,salary),stringsAsFactors=TRUE)
test[,"salary"] <- as.numeric(as.character(test[,"salary"] ))

Tôi có một biến kết quả (lương) trong tập dữ liệu của tôi và một vài biến đầu vào (công cụ). Làm thế nào tôi có thể hình dung một âm mưu hộp ngang như thế này: nhập mô tả hình ảnh ở đây

Câu trả lời:


3

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ữ testliệ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 melthàm / phương thức từ reshapegó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ữ testliệ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ư:

Trên khung bên trái hiển thị số đếm cách phần mềm khác nhau đang được sử dụng được thể hiện thông qua các biểu đồ thanh và trên ngăn bên phải hiển thị phân phối tiền lương được nhóm theo phần mềm được sử dụng được thể hiện qua các ô vuông.


2

Bạn sẽ cần tạo một cột chứa thông tin phần mềm - ví dụ như đặt tên cho phần mềm và cột lương có mức lương tương ứng để tương tự

 Software   Salary
 Microsoft  100
 Microsoft  300
 Microsoft  400
 SQL        200

và v.v ... sau đó bạn có thể vẽ với mã bên dưới

p <- ggplot(test, aes(factor(software), salary))
p + geom_boxplot() + coord_flip()

Tốt nhưng làm thế nào tôi có thể làm cột phần mềm?
Hamideh

Đó là điều bạn sẽ phải tự nghiên cứu. Tôi không chắc bộ dữ liệu của bạn trông như thế nào-- chức năng tan chảy có thể được sử dụng cho bạn.
Lauren Goodwin

@Laurenoodwin Câu trả lời của tôi cho câu hỏi này sử dụng GridExtra để vẽ một barplot và boxplot cạnh nhau để tạo ra trực quan hóa được yêu cầu.
Nitesh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.