2013-01-23 29 views
17

Tôi có tập dữ liệu được gọi là EPL2011_12. Tôi muốn tạo một tập dữ liệu mới bằng cách đặt gói gốc theo ngày. Các ngày có trong cột có tên là Date Ngày tháng ở định dạng DD-MM-YY.R tập hợp con theo ngày

Tôi đã thử

EPL2011_12FirstHalf <- subset(EPL2011_12, Date > 13-01-12) 

EPL2011_12FirstHalf <- subset(EPL2011_12, Date > "13-01-12") 

nhưng nhận được thông báo lỗi này mỗi lần.

Warning message: 
In Ops.factor(Date, 13- 1 - 12) : > not meaningful for factors 

Tôi đoán điều đó có nghĩa R đang xử lý như văn bản thay vì một số và lý do tại sao nó không hoạt động?

+2

Nó có nghĩa cột Ngày của bạn đã được đọc dưới dạng một yếu tố (có lẽ là khi sử dụng 'read.table' hoặc một số hàm tương tự). Bạn sẽ cần phải chuyển đổi nó bằng cách sử dụng ví dụ: 'as.Date'. – joran

+0

Đừng quên 'as.character()', ví dụ: sử dụng 'as.Date (as.character (X),"% d-% m-% y ")'. –

+0

@DirkEddelbuettel Không có phương thức 'as.Date.factor', hay tôi hiểu nhầm điều đó có nghĩa là gì ...? – joran

Trả lời

29

Vâng, rõ ràng không phải là số vì nó có dấu gạch ngang trong đó. Thông báo lỗi và hai ý kiến ​​cho bạn biết rằng nó là một yếu tố nhưng các nhà bình luận dường như đang chờ đợi và để cho bồn rửa nhắn trong Dirk được gợi ý rằng bạn làm điều này:.

EPL2011_12$Date2 <- as.Date(as.character(EPL2011_12$Date), "%d-%m-%y") 

Sau đó bạn có thể làm điều này:

EPL2011_12FirstHalf <- subset(EPL2011_12, Date2 > as.Date("2012-01-13")) 

Các hàm ngày R cho rằng định dạng là "YYYY-MM-DD" hoặc "YYYY/MM/DD". Bạn cần phải so sánh các lớp như: ngày tháng, hoặc ký tự thành ký tự.

+0

Yea đã làm việc. Cảm ơn tất cả mọi người. – user1899793

+1

@ user1899793, sau đó đảm bảo đánh dấu câu trả lời của DWin là được chấp nhận. – A5C1D2H2I1M1N2O1R2T1

+0

Nếu có các loại ngày khác như 2013/01/01 13:34:59 bạn có thể tham khảo https://stat.ethz.ch/R-manual/R-devel/library/base/html/strptime.html cho thêm chi tiết định dạng. – huangli

5

Điều đầu tiên bạn nên làm với các biến ngày tháng là xác nhận rằng R đọc nó như là một ngày. Để làm điều này, cho biến (ví dụ: vector/cột) được gọi là ngày, trong khung dữ liệu được gọi EPL2011_12, đầu vào

class(EPL2011_12$Date)

Sản lượng nên đọc [1] "Ngày". Nếu không, bạn nên định dạng nó như là một ngày bằng cách nhập

EPL2011_12$Date <- as.Date(EPL2011_12$Date, "%d-%m-%y")

Lưu ý rằng các dấu gạch nối trong định dạng ngày ("% d-% m →% y") trên đây cũng có thể là dấu gạch chéo ("% d /% m /% y"). Xác nhận R xem nó như là một ngày. Nếu không, hãy thử một lệnh định dạng khác nhau

EPL2011_12$Date <- format(EPL2011_12$Date, format="%d/%m/%y")

Một khi bạn có nó trong định dạng ngày, bạn có thể sử dụng lệnh subset, hoặc bạn có thể sử dụng dấu ngoặc

WhateverYouWant <- EPL2011_12[EPL2011_12$Date > as.Date("2014-12-15"),]

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