आर

2015-06-25 9 views
5

में डेटा.table का उपयोग करके दिनांक कॉलम में पॉज़िक्स कॉलम में शामिल होना निम्न उदाहरण में, क्या कोई मुझे बता सकता है कि 2015-03-31 दिनांक 1034-04-03 क्यों बदल गया?आर

dt1 = data.table(id = c(1,2), date = as.POSIXct("2015-03-31 BST"), key = "id") 
dt1 
# id  date 
# 1: 1 2015-03-31 
# 2: 2 2015-03-31 
dt2 = data.table(id = c(1,2), date = as.Date(NA), key = "id") 
dt2 
# id date 
# 1: 1 <NA> 
# 2: 2 <NA> 
dt2[dt1, date := i.date] 
dt2 
# id  date 
# 1: 1 1034-04-03 
# 2: 2 1034-04-03 

मेरा उद्देश्य date द्वारा Date बजाय प्रारूप POSIXct में dt2 को dt1 से प्राप्त करने के लिए है id (विभिन्न id अलग date होता)। मुझे यह कैसे करना है?

dt2 
# id  date 
# 1: 1 2015-03-31 
# 2: 2 2015-03-31 

संपादित:

मैं निम्नलिखित की कोशिश की है:

के बाद जो मैं चाहता है

dt2[dt1, date := as.Date(i.date)] 
dt2 
# id  date 
# 1: 1 2015-03-30 
# 2: 2 2015-03-30 

दुर्भाग्य से, यह मुझे दे रहा है 2015- 2015-03-31 के बजाय 03-30 ... ??? इसके बजाय 2015-03-31 कैसे प्राप्त करें?

+0

क्या आप नमूना डेटा डंप कर सकते हैं? – user227710

+3

आपका कोड शायद कम से कम एक चेतावनी देना चाहिए। कृपया [एक बग रिपोर्ट दर्ज करें] (https://github.com/Rdatatable/data.table/issues)। – Roland

+2

चेंग्ज, @ रोलैंड, दायर [# 1200] (https://github.com/Rdatatable/data.table/issues/1200)। – Arun

उत्तर

2

आप उपयोग कर सकते हैं

dt2[dt1, date:=as.Date(i.date)] 

तुम भी data.tables में डेटा प्रकार बदलने के बारे में सवाल Convert column classes in data.table को देखने के लिए चाहते हो सकता है।

+0

दुर्भाग्यवश, यदि मैंने जो प्रस्तावित किया है, तो मैं 2015-03-31 के बजाय 2015-03-30 प्राप्त करता हूं .... कैसे आते हैं? – chengcj

+3

@chengcj यह एक टाइमज़ोन मुद्दा है। अपना टाइमज़ोन 'as.Date' पर पास करें। – Roland