2012-10-11 28 views
5

Tôi mới sử dụng R và ggplot2. Tôi có tệp csv với dữ liệu tiêu thụ đồ uống. Cột đầu tiên là Năm, và sau đó 9 cột tiếp theo là các loại đồ uống như, cà phê, trà, soda, vv, với các giá trị cho số tiền tiêu thụ cho giá trị năm của hàng đó. Dữ liệu bao gồm khoảng thời gian 41 năm. Tôi đã nghiên cứu và thử nhiều thứ. Tôi có thể dễ dàng tạo ra một dấu chấm cho bất kỳ loại đồ uống nào với ggplot.Tái cơ cấu dữ liệu csv cho r và ggplot2

Tuy nhiên, tôi muốn tạo các ô được xếp chồng lên nhau theo chiều ngang với Năm trên trục x cho mỗi ô. Vì vậy, sẽ có một âm mưu cho cà phê, và sau đó ngay bên dưới nó, một cho trà, vv Tôi nghĩ rằng tôi muốn sử dụng các khía cạnh. Tôi cũng nghĩ rằng tôi muốn chuyển đổi dữ liệu của mình thành 3 cột: một cột cho năm, một cột cho "danh mục" (ví dụ: cà phê, trà, soda, v.v.) và giá trị cuối cùng cho giá trị. Suy nghĩ của tôi là khi tôi nhận được dữ liệu ở dạng đó, thì việc sử dụng faceting nên thẳng về phía trước.

Vấn đề là, tôi không thể tìm ra cách lấy dữ liệu của tôi trong biểu mẫu đó. Dưới đây là cách xem một vài hàng đầu tiên của dữ liệu:

Year Whole Milk Other Milk Total Milk Tea Coffee Diet Soda Regular Soda Total Soda Juice 
1970 25.5 5.8 31.3 6.8 33.4 2.1 22.2 24.3 5.5 
1971 25 6.3 31.3 7.2 32.2 2.2 23.3 25.5 5.8 
1972 24.1 6.9 31 7.3 33.6 2.3 23.9 26.2 6 

Ai đó có thể giúp tôi?

dput của dữ liệu là:

structure(list(Year = 1970:1972, `Whole Milk` = c(25.5, 25, 24.1 
), `Other Milk` = c(5.8, 6.3, 6.9), `Total Milk` = c(31.3, 31.3, 
31), Tea = c(6.8, 7.2, 7.3), Coffee = c(33.4, 32.2, 33.6), `Diet Soda` = c(2.1, 
2.2, 2.3), `Regular Soda` = c(22.2, 23.3, 23.9), `Total Soda` = c(24.3, 
25.5, 26.2), Juice = c(5.5, 5.8, 6)), .Names = c("Year", "Whole Milk", 
"Other Milk", "Total Milk", "Tea", "Coffee", "Diet Soda", "Regular Soda", 
"Total Soda", "Juice"), class = "data.frame", row.names = c(NA, 
-3L)) 
+0

dput là mới đối với tôi. Tôi chỉ nhìn nó lên và cố gắng sử dụng nó, nhưng tôi không nhận được nó. Tôi có một tập tin, nói, 'myTestFile.csv'. Tôi đã thử: dput (x, file = 'myTestFile.csv'), và nhận được một thông báo lỗi. Bạn đã không nhập tất cả dữ liệu theo cách thủ công, phải không? Bạn có thể giúp tôi hiểu những gì bạn đã làm, và làm thế nào tôi sẽ sử dụng dput với một tập tin csv? – user1739283

+0

Nếu bạn có một biến, x, bạn có thể dput (x) và nó sẽ cung cấp cho bạn một cách để vận chuyển x đến một biến dễ dàng. Hãy thử nó trong R, sao chép và dán 'cấu trúc (danh sách ....' sau đó gõ 'x <- PASTE' sau đó' str (x) '. –

Trả lời

6

Tôi có một câu nói rất ít mà tôi thường sử dụng cho ggplot2, "Khi nghi ngờ, làm tan chảy". Trong gói định hình lại có hàm melt(), thực hiện chính xác điều này.

tmp <- structure(list(Year = 1970:1972, `Whole Milk` = c(25.5, 25, 24.1 
), `Other Milk` = c(5.8, 6.3, 6.9), `Total Milk` = c(31.3, 31.3, 
31), Tea = c(6.8, 7.2, 7.3), Coffee = c(33.4, 32.2, 33.6), `Diet Soda` = c(2.1, 
2.2, 2.3), `Regular Soda` = c(22.2, 23.3, 23.9), `Total Soda` = c(24.3, 
25.5, 26.2), Juice = c(5.5, 5.8, 6)), .Names = c("Year", "Whole Milk", 
"Other Milk", "Total Milk", "Tea", "Coffee", "Diet Soda", "Regular Soda", 
"Total Soda", "Juice"), class = "data.frame", row.names = c(NA, 
-3L)) 

library(reshape) 

melt(tmp, id.vars="Year") 

Year  variable value 
1 1970 Whole Milk 25.5 
2 1971 Whole Milk 25.0 
3 1972 Whole Milk 24.1 
4 1970 Other Milk 5.8 
5 1971 Other Milk 6.3 
6 1972 Other Milk 6.9 
7 1970 Total Milk 31.3 
8 1971 Total Milk 31.3 
9 1972 Total Milk 31.0 
10 1970   Tea 6.8 
11 1971   Tea 7.2 
12 1972   Tea 7.3 
13 1970  Coffee 33.4 
... 
+1

+1 cho" khi nghi ngờ tan chảy "đó là kinh nghiệm của tôi cũng – SlowLearner

Các vấn đề liên quan