2013-01-23 30 views
17

मेरे पास EPL2011_12 नामक एक डेटासेट है। मैं मूल तिथि को मूल रूप से सब्सक्राइब करके नया डेटासेट बनाना चाहता हूं। दिनांक Date नामक कॉलम में हैं दिनांक डीडी-एमएम-वाई वाई प्रारूप में हैं।आर सबसेट तिथि

मैं

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

और

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

की कोशिश की लेकिन यह त्रुटि संदेश हर बार मिल चुके हैं।

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

मुझे लगता है कि इसका मतलब है कि आर संख्या की जगह और यही कारण है यह काम नहीं करेगा पाठ की तरह का इलाज किया जाता है?

+2

इसका मतलब है कि उपयोग कर सकते हैं आपका दिनांक कॉलम एक कारक के रूप में पढ़ा गया था (संभवतः 'read.table' या कुछ समान फ़ंक्शन का उपयोग करते समय)। आपको इसका उपयोग करके इसे कन्वर्ट करना होगा 'As.Date'। – joran

+0

'as.character()' को न भूलें, उदाहरण के लिए 'as.Date (as.character (X), "% d-% m-% y") का उपयोग करें। –

+0

@DirkEddelbuettel वहाँ 'as.Date.factor' विधि नहीं है, या क्या मैं गलत समझ रहा हूं कि क्या करता है ...? – joran

उत्तर

29

ठीक है, यह स्पष्ट रूप से एक संख्या नहीं है क्योंकि इसमें डैश है। त्रुटि संदेश और दो टिप्पणियां आपको बता दूँ कि यह एक कारक है लेकिन टिप्पणीकारों जाहिरा तौर पर इंतजार कर रहे हैं और में संदेश सिंक दे रहे हैं एक प्रकार की कटार सुझाव है कि आप ऐसा करते हैं:।

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

उसके बाद आप यह कर सकते हैं:

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

आर दिनांक कार्य मानते हैं कि प्रारूप "YYYY-MM-DD" या "YYYY/MM/DD" है। आपको कक्षाओं की तरह तुलना करने की आवश्यकता है: तिथि से तारीख, या चरित्र से चरित्र।

+0

हाँ जो काम करता था। सभी का धन्यवाद। – user1899793

+1

@ user1899793, फिर स्वीकार करें कि डीडब्ल्यूएन के उत्तर को स्वीकृति के रूप में चिह्नित करना है। – A5C1D2H2I1M1N2O1R2T1

+0

यदि 2013/01/01 13:34:59 जैसी अन्य तारीख प्रकार हैं तो आप https://stat.ethz.ch/R-manual/R-devel/library/base/html/strptime.html के लिए संदर्भित कर सकते हैं अधिक प्रारूप विवरण। – huangli

5

दिनांक चर के साथ आपको सबसे पहले जो करना चाहिए वह पुष्टि करता है कि आर इसे एक तिथि के रूप में पढ़ता है। इनपुट EPL2011_12 बुलाया डेटा फ्रेम में चर (अर्थात वेक्टर/स्तंभ) तिथि कहा जाता है के लिए ऐसा करने के लिए,,

class(EPL2011_12$Date)

उत्पादन [1] पढ़ना चाहिए "तिथि"। यदि ऐसा नहीं होता, तो आप inputting

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

नोट द्वारा दिनांक के रूप में स्वरूपित करना चाहिए कि दिनांक स्वरूप में हाइफ़न ("% डी% m-% y") के ऊपर भी स्लैश हो सकता है ("% d /% एम /% y")। पुष्टि करें कि आर इसे एक तिथि के रूप में देखता है। एक बार जब आप यह तिथि प्रारूप में है, तो यह नहीं, एक अलग स्वरूपण आदेश

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

कोशिश करता है, तो आप subset आदेश का उपयोग कर सकते हैं, या आप कोष्ठक

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