मुझे एक मैट्रिक्स मीटर मिला है जो इस तरह दिखता है:
df <- c("2011-01-02", "2011-01-05", "2011-01-08", "2011-01-11", "2011-01-14",
"2011-01-17", "2011-01-20", "2011-01-23", "2011-01-26", "2011-01-29",
"2011-02-01", "2011-02-04", "2011-02-07", "2011-02-10", "2011-02-13")
m <- matrix(nrow = 1, ncol = 15, byrow = T, data = df)
मैट्रिक्स के भीतर प्रविष्टियाँ हैं Date
क्लास ऑब्जेक्ट्स।
मेरे पास एक अंतराल है:
start <- as.Date("2011-01-26")
end <- as.Date("2011-02-10")
अब मैं मैट्रिक्स में सभी तिथियों का चयन करना चाहता हूंजो इस अंतराल में गिर जाते हैं (उदा। 9 से 14) और उन्हें एक नए मैट्रिक्स में आउटपुट करते हैं। मैं इस चयन को करने में सक्षम नहीं था, किसी भी इनपुट की बहुत सराहना की जाती है! मैंने उपयोग किया lubridate
आर में पैकेज
मैट्रिक्स m का स्वरूपण मेरे मूल Dates मैट्रिक्स की पहली पंक्ति का एक हिस्सा दर्शाता है, जो स्वयं के पास है dim = (96, 850)
.
EDIT1: स्पष्टता के लिए संपादित, "प्रारंभ" और "अंत" थे Date
प्रकार लेकिन इस तरह के रूप में लेबल नहीं।
उत्तर:
जवाब के लिए 3 № 1के रूप में अपनी तारीखों का इलाज करने के लिए सबसे अच्छा है Date
वर्ग
# convert to Dates
m <- as.Date(m)
start <- as.Date(start)
end <- as.Date(end)
उपयोग dplyr::between
अपने डेटा को फ़िल्टर करने के लिए
require(dplyr)
ans <- m[dplyr::between(m, start, end)] # m >= start && m <= end
# [1] "2011-01-26" "2011-01-29" "2011-02-01" "2011-02-04" "2011-02-07"
# [6] "2011-02-10"
यह एक वेक्टर को आउटपुट करता है।
मैट्रिक्स आउटपुट के लिए, कुछ इस तरह का प्रयास करें
n <- m
n[!dplyr::between(n, start, end)] <- NA
newm <- matrix(nrow=1, ncol=15, byrow=T, data=n)
उत्तर № 2 के लिए 1
यहाँ एक बेस R विधि का उपयोग किया गया है seq
शुरू और अंत के बीच की तारीखों को उत्पन्न करने के लिए और %in%
m[m %in% as.character(seq(as.Date(start), as.Date(end), by="day"))]
[1] "2011-01-26" "2011-01-29" "2011-02-01" "2011-02-04" "2011-02-07" "2011-02-10"
ध्यान देने वाली एक बात यह है कि तिथि आर में एक वर्ग है, जैसा कि मैट्रिक्स है। दिनांक ऑब्जेक्ट्स के रूप में मैट्रिक्स में दिनांक संग्रहीत करने के लिए यह काफी मुश्किल है, (शायद असंभव नहीं)। इसके बजाय, उपरोक्त पात्रों के रूप में संग्रहीत किए जाते हैं।
यह समाधान प्रारंभ और अंत का उपयोग कर दिनांक में परिवर्तित करता है as.Date
और फिर उपयोग करता है seq
शुरू से अंत तक दैनिक तिथियों के एक वेक्टर का उत्पादन करने के लिए। ये तब वर्णों में परिवर्तित हो जाते हैं और m का उपयोग करते हुए तत्व की तुलना करते हैं %in%
। आखिरकार, [
वांछित तत्वों को निकालने के लिए उपयोग किया जाता है।