दिलचस्प पोस्ट
बृहदान्त्र के धारणा को वेक्टोरिज़िंग (:) – MATLAB में दो वैक्टर के बीच मूल्य SQL सर्वर utf8 howto? "/ Usr / bin / ld: नहीं मिल सकता- lz" सामान्य तरीके का उपयोग करने के लिए और वाइल्ड-कार्ड का उपयोग कब करना है? चेतावनी: mysql_query (): 3 वैध MySQL- लिंक संसाधन नहीं है जावा में सिंगलटन पैटर्न को लागू करने का एक प्रभावी तरीका क्या है? नियमित अभिव्यक्ति विषय स्ट्रिंग में व्हाइटस्पेस को कैसे अनदेखा करना है? क्या मैं MySQL में एक डिफ़ॉल्ट मान के लिए फ़ंक्शन का उपयोग कर सकता हूं? एंड्रॉइड 6.0 (मार्शमॉल) के साथ अपाचे एचटीटीपी कनेक्शन ASP.NET MVC ViewModels के साथ knockout.js का उपयोग कैसे करें? कोई शब्द नहीं है जिसमें एक शब्द का मिलान करने के लिए नियमित अभिव्यक्ति है? स्थानीय चर के लिए WPF बाध्यकारी वितरित लॉक सेवा कैसे गिट में गिरा दिया छिपाने की जगह को ठीक करने के लिए? पासवर्ड में संरक्षित नेटवर्क ड्राइव को विंडोज में सी # में?

Read.table / read.csv में colClasses तर्क के लिए कस्टम दिनांक स्वरूप निर्दिष्ट करें

सवाल:

क्या read.table / read.csv में colClasses तर्क का उपयोग करते समय दिनांक स्वरूप निर्दिष्ट करने का कोई तरीका है?

(मुझे पता है कि आयात करने के बाद मैं कन्वर्ट कर सकता हूं, लेकिन इस तरह के कई तारीख कॉलमों के साथ, इसे आयात चरण में करना आसान होगा)


उदाहरण:

मेरे प्रारूप में %d/%m/%Y में दिनांक कॉलम के साथ .csv है

 dataImport <- read.csv("data.csv", colClasses = c("factor","factor","Date")) 

यह रूपांतरण गलत हो जाता है उदाहरण के लिए, 15/07/2008 हो जाता है 0015-07-20


प्रजनन कोड:

 data <- structure(list(func_loc = structure(c(1L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 5L), .Label = c("3076WAG0003", "3076WAG0004", "3076WAG0007", "3076WAG0009", "3076WAG0010"), class = "factor"), order_type = structure(c(3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 3L, 1L), .Label = c("PM01", "PM02", "PM03"), class = "factor"), actual_finish = structure(c(4L, 6L, 1L, 2L, 3L, 7L, 1L, 8L, 1L, 5L), .Label = c("", "11/03/2008", "14/08/2008", "15/07/2008", "17/03/2008", "19/01/2009", "22/09/2008", "6/09/2007"), class = "factor")), .Names = c("func_loc", "order_type", "actual_finish"), row.names = c(NA, 10L), class = "data.frame") write.csv(data,"data.csv", row.names = F) dataImport <- read.csv("data.csv") str(dataImport) dataImport dataImport <- read.csv("data.csv", colClasses = c("factor","factor","Date")) str(dataImport) dataImport 

और ये है कि आउटपुट कैसा दिखता है:

कोड आउटपुट

वेब के समाधान से एकत्रित समाधान "Read.table / read.csv में colClasses तर्क के लिए कस्टम दिनांक स्वरूप निर्दिष्ट करें"

आप अपना स्वयं का फ़ंक्शन लिख सकते हैं जो स्ट्रिंग स्वीकार कर लेता है और उसे इच्छित प्रारूप का उपयोग करके एक तिथि में परिवर्तित कर देता है, तो setAs को विधि के रूप में सेट करने के लिए उपयोग करें। उसके बाद आप अपने कार्यों को कॉल क्लासेस के हिस्से के रूप में उपयोग कर सकते हैं।

प्रयत्न:

 setAs("character","myDate", function(from) as.Date(from, format="%d/%m/%Y") ) tmp <- c("1, 15/08/2008", "2, 23/05/2010") con <- textConnection(tmp) tmp2 <- read.csv(con, colClasses=c('numeric','myDate'), header=FALSE) str(tmp2) 

फिर अपने डेटा के लिए काम करने के लिए आवश्यक होने पर संशोधित करें।

संपादित करें —

आप चेतावनी (आप चेतावनी को अनदेखा कर सकते हैं, लेकिन अगर आप इसे बहुत कुछ करते हैं, और यह एक साधारण कॉल है जो इसे से छुटकारा मिल सकता है) परेशान कर सकते हैं से बचने के लिए पहले setClass('myDate') को चलाने के लिए चाहते हो सकता है।

यदि केवल 1 तारीख स्वरूप है जिसे आप बदलना चाहते हैं, तो आप डिफ़ॉल्ट स्वरूप को डिफ़ॉल्ट स्वरूप को बदलने के लिए के रूप में as.Date.character

 library(Defaults) setDefaults('as.Date.character', format = '%d/%M/%Y') dataImport <- read.csv("data.csv", colClasses = c("factor","factor","Date")) str(dataImport) ## 'data.frame': 10 obs. of 3 variables: ## $ func_loc : Factor w/ 5 levels "3076WAG0003",..: 1 2 3 3 3 3 3 4 4 5 ## $ order_type : Factor w/ 3 levels "PM01","PM02",..: 3 3 1 1 1 1 2 2 3 1 ## $ actual_finish: Date, format: "2008-10-15" "2009-10-19" NA "2008-10-11" ... 

मुझे लगता है कि @ ग्रेग हिम का उत्तर बहुत बेहतर है, क्योंकि यह अक्सर इस्तेमाल किए जाने वाले फ़ंक्शन के डिफ़ॉल्ट व्यवहार को परिवर्तित नहीं करता है।

मामले में आपको समय की आवश्यकता भी है:

 setClass('yyyymmdd-hhmmss') setAs("character","yyyymmdd-hhmmss", function(from) as.POSIXct(from, format="%Y%m%d-%H%M%S")) d <- read.table(colClasses="yyyymmdd-hhmmss", text="20150711-130153") str(d) ## 'data.frame': 1 obs. of 1 variable: ## $ V1: POSIXct, format: "2015-07-11 13:01:53"