2016-02-12 19 views
13

में दशक के लिए एक साल मैं मंजिल निकटतम दशक के लिए तारीखों का एक सेट करना चाहते हैं, उदाहरण के लिए:मंजिल आर

1922 --> 1920, 
2099 --> 2090, 

आदि

मुझे उम्मीद थी मैं Lubridate में ऐसा कर सकता है, के रूप में:

floor_date(1922, 'decade') 

लेकिन मैं मिलता है:

Error in match.arg(unit) : 
    'arg' should be one of “second”, “minute”, “hour”, “day”, “week”, “month”, “year” 

क्या यह शानदार तरीके से करने का कोई तरीका है, शायद कताई करने के लिए अगर किसी अन्य कथन का एक गुच्छा से बचें, और उम्मीद है कि समूह बनाने के लिए cut एस का एक गुच्छा से परहेज करें?

उत्तर

2

मंजिल: एक तरीके के रूप मापांक के

लगता है कि आप lubridate का उपयोग करना चाहते हैं, तो उसे कुछ इस तरह किया जा सकता है सही अंक निकालने और मूल वर्ष से घटाने के लिए इसका उपयोग करें। 1998 - 8 = 1990

> 1992 - 1992 %% 10 
[1] 1990 
> 1998 - 1998 %% 10 
[1] 1990 

छत निकटतम दशक के आर में एक वर्ष:

छत वास्तव में फर्श की तरह है, लेकिन आर में एक इयर राउंड 10.

> 1998 - (1998 %% 10) + 10 
[1] 2000 
> 1992 - (1992 %% 10) + 10 
[1] 2000 

जोड़ने निकटतम दशक तक:

इंटीजर डिवीजन आपके 1998 से 199.8 को परिवर्तित करता है, पूर्णांक के लिए गोलाकार 20 है 0, 2000 तक वापस जाने के लिए 10 से गुणा करें।

> round(1992/10) * 10 
[1] 1990 
> round(1998/10) * 10 
[1] 2000 
17

आप यहां कुछ पूर्णांक विभाजन का उपयोग कर सकते हैं। बस देखें कि प्रत्येक नंबर में कितने दशकों तक जाते हैं।

(c(1922, 2099) %/% 10) * 10 
# [1] 1920 2090 
+10

या इसी तरह 'x - (x %% 10)'। – thelatemail

0

आप पूर्णांक के लिए floor_date() का उपयोग नहीं कर सकते हैं; यह तिथि या डेटाटाइम वस्तुओं के लिए है। जैसा कि पहले से ही श्रीफ्लिक के जवाब में सुझाव दिया गया है, आपको पूर्णांक गणना करने के लिए लुब्र्रिडेट की आवश्यकता नहीं है। एक वर्ष के अनुसंधान में निकटतम दशक के


library(lubridate) 

y <- ymd(c("2016-01-01", "2009-12-31")) 
floor_date(y, years(10)) 
#> [1] "2010-01-01" "2000-01-01" 
+0

अच्छा बिंदु। धन्यवाद। –