मैं दो एक्सटीएस ऑब्जेक्ट्स को जॉइन = "बाएं" यानी (बाएं ऑब्जेक्ट में सभी पंक्तियां, और जो दाईं ओर मेल खाते हैं) के साथ विलय कर रहा हूं। मैंने इन आपत्तियों को myEnv में लोड किया है।
library(quantmod)
myEnv <- new.env()
getSymbols("AAPL;FB", env=myEnv)
[1] "AAPL" "FB"
MainXTS <- do.call(merge, c(eapply(myEnv, Cl), join = "left"))
head(MainXTS)
AAPL.Close FB.Close
2007-01-03 2.992857 NA
2007-01-04 3.059286 NA
2007-01-05 3.037500 NA
2007-01-08 3.052500 NA
2007-01-09 3.306072 NA
2007-01-10 3.464286 NA
range(index(myEnv$AAPL))
[1] "2007-01-03" "2020-10-27"
range(index(myEnv$FB))
[1] "2012-05-18" "2020-10-27"
अब तक यह अपेक्षित रूप से काम कर रहा है क्योंकि उपरोक्त मर्ज किए गए ऑब्जेक्ट में टाइम इंडेक्स एपीपीएल से उठाया जा रहा है। मुद्दा यह है कि जब मैं टिकर का क्रम बदलता हूं ताकि एफबी पहले आए, तो मर्ज की गई वस्तु अभी भी एएपीएल से समय अनुक्रमणिका उठाती है।
myEnv <- new.env()
getSymbols("FB;AAPL", env=myEnv)
[1] "FB" "AAPL"
MainXTS <- do.call(merge, c(eapply(myEnv, Cl), join = "left"))
head(MainXTS)
AAPL.Close FB.Close
2007-01-03 2.992857 NA
2007-01-04 3.059286 NA
2007-01-05 3.037500 NA
2007-01-08 3.052500 NA
2007-01-09 3.306072 NA
2007-01-10 3.464286 NA
मैं उम्मीद कर रहा था कि समय सूचकांक एफबी से उठाया जाएगा। क्या किसी को पता है कि मैं क्या खो रहा हूँ?
मुझे लगता है कि इसका इस तथ्य से कुछ लेना-देना है कि वस्तुओं को लोड करने का क्रम समान है और इसके ऊपर के दोनों मामलों में यह है:
ls(myEnv)
[1] "AAPL" "FB"
1
Stat
29 अक्टूबर 2020, 02:03
1 उत्तर
सबसे बढ़िया उत्तर
हम match
के साथ ऑर्डर बदल सकते हैं
out <- do.call(merge, c(lapply(mget(ls(myEnv)[match(ls(myEnv),
c("FB", "AAPL"))], myEnv), Cl), join = "left"))
आउटपुट
head(out)
# FB.Close AAPL.Close
#2012-05-18 38.23 18.94214
#2012-05-21 34.03 20.04571
#2012-05-22 31.00 19.89179
#2012-05-23 32.00 20.37714
#2012-05-24 33.03 20.19000
#2012-05-25 31.91 20.08178
0
akrun
29 अक्टूबर 2020, 02:13