दिलचस्प पोस्ट
जावा में एक स्थानीय फाइल को यूआरएल में पास करें PostgreSQL के साथ संख्यात्मक () '$ (दस्तावेज़) के non-jQuery समतुल्य क्या है .ready ()'? कैसे पायथन में दो unordered सूचियों (सेट नहीं) की कुशलता से तुलना करें? "SMTP त्रुटि: प्रमाणीकृत नहीं किया जा सका" PHPMailer में मैं एंड्रॉइड पर एसडी कार्ड में डेटाबेस फ़ाइल कैसे बैकअप करूं? आईओएस 7: स्टेटस बार के तहत यूआईटीबलदृश्य दिखाता है Foreach लूप में निर्मित लिंक क्वेरी हमेशा पिछली यात्रा से पैरामीटर मान लेती हैं क्यों आकार (बूल) को एक के रूप में परिभाषित नहीं किया जाता है, मानक खुद से? जावा के साथ अंकों की सूची छंटनी document.body.scrollTop फ़ायरफ़ॉक्स रिटर्न 0: केवल जेएस mysql2 मणि ​​गलत mysql ग्राहक पुस्तकालय के लिए संकलित वीबी.नेट में क्लासेस बनाम मॉड्यूल प्रकार सेट अनुमान पर विफल रहता है। सेट के साथ बनाया गया है? Android में वैश्विक ध्वनि को म्यूट करें

चौदहों से लंबा प्रारूप (प्लॉटिंग के लिए) के समय श्रृंखला डेटा को दोबारा करना

मेरे पास एक डेटा फ्रेम है जिसमें रिटर्न की एक से अधिक समय श्रृंखला होती है, जो कि कॉलम में संग्रहीत होती है।

पहले स्तंभ में तारीखें होती हैं, और बाद के कॉलम प्रत्येक नाम के साथ स्वतंत्र समय श्रृंखला होते हैं। कॉलम हेडर वेरिएबल नाम हैं।

## I have a data frame like this t <- seq(as.Date('2009-01-01'),by='days',length=10) X <- rnorm(10,0,1) Y <- rnorm(10,0,2) Z <- rnorm(10,0,4) dat <- data.frame(t,X,Y,Z) ## which appears as t XYZ 1 2009-01-01 -1.8763317 -0.1885183 -6.655663 2 2009-01-02 -1.3566227 -2.1851226 -3.863576 3 2009-01-03 -1.3447188 2.4180249 -1.543931 

मैं प्रत्येक समय सीरीज़ को एक अलग साजिश पर एक पंक्ति के रूप में साजिश करना चाहता हूं, एक जाली में, प्रत्येक नामित वेरिएबल नामों पर लगाए गए भूखंडों के साथ।

जालक के साथ इस साजिश के लिए, डेटा एक लंबा प्रारूप में होना चाहिए, जैसे:

  t symbol price 1 2009-01-01 X -1.8763317 2 2009-01-02 Y -0.1885183 2 2009-01-02 Z -6.655663 

ऐसा करने के लिए एक अच्छा फ़ंक्शन कॉल क्या है?

वेब के समाधान से एकत्रित समाधान "चौदहों से लंबा प्रारूप (प्लॉटिंग के लिए) के समय श्रृंखला डेटा को दोबारा करना"

आप 'reshape' लाइब्रेरी से पिघल () का उपयोग भी कर सकते हैं (मुझे लगता है कि यह स्वयं को नयी आकृति प्रदान करने के लिए उपयोग करना आसान है) – इससे आपको टाइम कॉलम को वापस जोड़ने का अतिरिक्त कदम बचा होगा …

 > library(reshape) > m <- melt(dat,id="t",variable_name="symbol") > names(m) <- sub("value","price",names(m)) > head(m) t symbol price 1 2009-01-01 X -1.14945096 2 2009-01-02 X -0.07619870 3 2009-01-03 X 0.01547395 4 2009-01-04 X -0.31493143 5 2009-01-05 X 1.26985167 6 2009-01-06 X 1.31492397 > class(m$t) [1] "Date" > library(lattice) > xyplot( price ~ t | symbol, data=m ,type ="l", layout = c(1,3) ) 

इस विशेष कार्य के लिए, हालांकि, मैं 'चिड़ियाघर' लाइब्रेरी का उपयोग करने पर विचार करता हूं, जिसके लिए आपको डेटा फ्रेम का नयी आकार देने की आवश्यकता नहीं होगी:

 > library(zoo) > zobj <- zoo(dat[,-1],dat[,1]) > plot(zobj,col=rainbow(ncol(zobj))) 

डेवलपर्स / योगदानकर्ता (इस मामले में गबोर और हैडली) ने हमें बहुत अच्छे विकल्प दिए हैं (और जाली पैकेज के लिए दीपायन को नहीं भूल सकता)

टिडिर से सहायता पाने वाले पृष्ठ:

उदाहरण

 library(tidyr) library(dplyr) # From http://stackoverflow.com/questions/1181060 stocks <- data.frame( time = as.Date('2009-01-01') + 0:9, X = rnorm(10, 0, 1), Y = rnorm(10, 0, 2), Z = rnorm(10, 0, 4) ) gather(stocks, stock, price, -time) stocks %>% gather(stock, price, -time) 

यदि यह एक बहुभिन्नरूपी समय श्रृंखला है, तो उसे उसी नाम के पैकेज का उपयोग करके एक चिड़ियाघर वस्तु के रूप में संग्रहीत करने पर विचार करें। यह इंडेक्सिंग, मर्जिंग, बहुत आसानी से सबसेटिंग करता है — चिड़ियाघर विगनेट्स देखें।

लेकिन जैसा कि आप जाली के भूखंडों के बारे में पूछा – और यह भी किया जा सकता है। इस उदाहरण में, हम एक साधारण कॉलम के साथ 'लंबी' डेटा। फ्रेम का निर्माण करते हैं, साथ ही मान कॉलम 'वैल' और एक वैरिएबल आईडी कॉलम 'var':

 > set.seed(42) > D <- data.frame(date=rep(seq(as.Date("2009-01-01"),Sys.Date(),by="week"),2),\ val=c(cumsum(rnorm(30)), cumsum(rnorm(30))), \ var=c(rep("x1",30), rep("x2",30))) 

यह देखते हुए कि डाटासेट, आपके विवरण के अनुसार प्लॉटिंग, जेपीप्लोट द्वारा 'वैरिएबल द्वारा समूहित मूल्य' के एक भूखंड के लिए पूछकर जाली पैकेज से किया जाता है, जहां हम प्रत्येक पैनल में लाइनों को चालू करते हैं:

 > library(lattice) > xyplot(val ~ date | var, data=D, panel=panel.lines) 

प्रत्येक कॉलम में प्रत्येक कॉलम में पहले कॉलम और मानों की तिथि के साथ एक डाटाफ्रेम 'अस्थायी' के लिए:

 > par(mfrow=c(3,4)) # 3x4 grid of plots > mapply(plot,temp[,-1],main=names(temp)[-1],MoreArgs=list(x=temp[,1],xlab="Date",type="l",ylab="Value") ) 

जवाब लोगों के लिए बहुत धन्यवाद – डीर्क का जवाब निशान पर था।

लापता कदम डेटा फ्रेम को एक लंबे प्रारूप तक कनवर्ट करने के लिए "स्टैक ()" फ़ंक्शन का उपयोग करने के लिए निकला मुझे पता है कि ऐसा करने के लिए एक आसान तरीका हो सकता है फिर से काम करना () फ़ंक्शन के साथ, उदाहरण देखने के लिए खुशी होगी अगर कोई इसे पोस्ट करना चाहता है।

तो प्रश्न में उल्लेखित 'डेटा' डेटाफ्रेम का उपयोग करते हुए, मैं यहाँ समाप्त कर रहा हूं:

 ## use stack() to reshape the data frame to a long format ## <time> <stock> <price> stackdat <- stack(dat,select=-t) names(stackdat) <- c('price','symbol') ## create a column of date & bind to the new data frame nsymbol <- length(levels(stackdat$symbol)) date <- rep(dat$t, nsymbol) newdat <- cbind(date,stackdat) ## plot it with lattice library(lattice) xyplot(price ~ date | symbol, ## model conditions on 'symbol' to lattice data=newdat, ## data source type='l', ## line layout=c(nsymbol,1)) ## put it on a single line ## or plot it with ggplot2 library(ggplot2) qplot(date, price, data = newdat, geom="line") + facet_grid(. ~ symbol)