/ / सबसेट एक मैट्रिक्स जिसमें केवल तिथियाँ हैं - आर, तिथि, सबसेट

केवल मैटिक्स युक्त एक मैट्रिक्स को सब्सक्राइब करें - आर, दिनांक, सबसेट

मुझे एक मैट्रिक्स मीटर मिला है जो इस तरह दिखता है:

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%। आखिरकार, [ वांछित तत्वों को निकालने के लिए उपयोग किया जाता है।