আর টাইম সিরিজের ভেক্টরগুলিকে সাবসেট করা হচ্ছে


25

আমার একটি টাইম সিরিজ রয়েছে এবং আমি এটি সূচনা, শেষ এবং ফ্রিকোয়েন্সি সংরক্ষণ করে সময় সিরিজ হিসাবে রাখার সময় এটিকে সাবসেট করতে চাই।

উদাহরণস্বরূপ, ধরা যাক আমার একটি সময় সিরিজ রয়েছে:

> qs <- ts(101:110, start=c(2009, 2), frequency=4)
> qs
     Qtr1 Qtr2 Qtr3 Qtr4
2009       101  102  103
2010  104  105  106  107
2011  108  109  110     

এখন আমি এটি সাবসেট করব:

> qs[time(qs) >= 2010 & time(qs) < 2011]
[1] 104 105 106 107

লক্ষ্য করুন যে আমি সঠিক ফলাফল পেয়েছি, তবে আমি সময় সিরিজ থেকে "র‌্যাপিংস" হারিয়েছি (যথা শুরু, শেষ, ফ্রিকোয়েন্সি।)

আমি এই জন্য একটি ফাংশন খুঁজছি। কোনও টাইম সিরিজ সাবসেট করা কি সাধারণ দৃশ্য নয়? যেহেতু আমি এখনও একটি খুঁজে পাইনি, আমি এখানে একটি ফাংশন লিখেছি:

subset.ts <- function(data, start, end) {
  ks <- which(time(data) >= start & time(data) < end)
  vec <- data[ks]
  ts(vec, start=start(data) + c(0, ks[1] - 1), frequency=frequency(data))
}

আমি উন্নতি বা এটি করার ক্লিনার উপায়গুলি সম্পর্কে শুনতে চাই। বিশেষত, আমি হার্ড কোডিং শুরু এবং শেষের উপায়টি পছন্দ করি না। আমি বরং ব্যবহারকারীকে একটি নির্বিচারে বুলিয়ান শর্ত নির্দিষ্ট করতে দেব।

উত্তর:


34

windowফাংশনটি ব্যবহার করুন :

> window(qs, 2010, c(2010, 4))
     Qtr1 Qtr2 Qtr3 Qtr4
2010  104  105  106  107

2
এছাড়াও নোট করুন যে উইন্ডো (qs, 2010, c (2010, 4)) <- 3 সেই অনুসারে কিউগুলি পরিবর্তন করবে।
mpiktas

6

এছাড়াও দরকারী, যদি আপনি একাধিক সময় সিরিজ সংমিশ্রণ করছেন এবং না চান windowতবে প্রত্যেকেরই সেগুলি মিলিয়ে আনতে হবে, ts.unionএবং ts.intersect

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.