आर

2012-09-29 8 views
18

में समय अंतर की गणना करने के साथ मेरे पास डेटा है जिसमें 3 मिलियन रिकॉर्ड हैं। प्रारंभ और समय। अंत में दो चर के रूप में। पहले 10 ऑब्जेक्ट निम्नानुसार हैं:आर

start.date start.time end.date end.time 
1 2012-07-13 15:01:32 2012-07-13 15:02:42 
2 2012-07-05 18:26:31 2012-07-05 18:27:19 
3 2012-07-14 20:23:21 2012-07-14 20:24:11 
4 2012-07-29 16:09:54 2012-07-29 16:10:48 
5 2012-07-21 14:58:32 2012-07-21 15:00:17 
6 2012-07-04 15:36:31 2012-07-04 15:37:11 
7 2012-07-22 18:28:31 2012-07-22 18:28:50 
8 2012-07-09 21:08:42 2012-07-09 21:09:02 
9 2012-07-05 09:44:52 2012-07-05 09:45:05 
10 2012-07-02 18:50:47 2012-07-02 18:51:38 

मुझे start.time और end.time के बीच अंतर की गणना करने की आवश्यकता है।

mbehave11$diff.time <- difftime(mbehave11$end.time, mbehave11$start.time, units="secs") 

लेकिन मैं इस त्रुटि हो रही है:

मैं निम्नलिखित कोड का इस्तेमाल किया

Error in as.POSIXlt.character(x, tz, ...) : 
    character string is not in a standard unambiguous format 
In addition: Warning messages: 
1: In is.na.POSIXlt(strptime(xx, f <- "%Y-%m-%d %H:%M:%OS", tz = tz)) : 
    Reached total allocation of 1535Mb: see help(memory.size) 
+0

क्या आप एक पुनरुत्पादित उदाहरण प्रदान कर सकते हैं? आप इसे अधिक जानकारी के लिए पढ़ सकते हैं: http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – Dason

उत्तर

32

आप चाहिए तारीख वस्तुओं में अपने तार कर देते हैं इससे पहले कि आप दिनांक/समय गणित कर सकते हैं। इस प्रयास करें:

क) अपने डेटा पढ़ना:

R> dat <- read.table(textConnection("start.date start.time end.date end.time 
2012-07-13 15:01:32 2012-07-13 15:02:42 
2012-07-05 18:26:31 2012-07-05 18:27:19 
2012-07-14 20:23:21 2012-07-14 20:24:11"), header=TRUE) 

ख) एक अवलोकन पर कार्य करना:

R> strptime(paste(dat[,1], dat[,2]), "%Y-%m-%d %H:%M:%S") 
[1] "2012-07-13 15:01:32" "2012-07-05 18:26:31" "2012-07-14 20:23:21" 

ग) सेट पर काम करते हुए, संख्यात्मक को बदलने:

R> as.numeric(difftime(strptime(paste(dat[,1],dat[,2]),"%Y-%m-%d %H:%M:%S"), 
         strptime(paste(dat[,3],dat[,4]),"%Y-%m-%d %H:%M:%S"))) 
[1] -70 -48 -50 
R> 
+0

लेकिन परिणाम का क्या अर्थ होगा? मेरा मतलब है -70 -48 -50 .. मैं उन्हें मिनटों में अंतर के रूप में कैसे समझा सकता हूं? – user1702490

+6

'सहायता (अलग-अलग) देखें' - एक इकाई तर्क है जो दूसरे पर डिफ़ॉल्ट होता है और जिसे आप ओवरराइड कर सकते हैं। लेकिन बस जांचने के लिए, पहली पंक्ति में -70 देखें और सोचें कि आपके द्वारा सेट की गई पहली पंक्ति में समय अंतर क्या है: सत्तर सेकंड। यदि आप minuts चाहते हैं, तो 'इकाइयों =" मिनट "') का उपयोग करें। इट्स दैट ईजी। –