R إنشاء نسخة من عمود حيث يتم تعويض العمود الجديد ببعض المبلغ الثابت

StackOverflow https://stackoverflow.com/questions/4219715

  •  26-09-2019
  •  | 
  •  

سؤال

أتطلع إلى إنشاء نسخة من عمود موجود في إطار بيانات يقابله عدد من الصفوف.

على سبيل المثال ، إذا كان العمود 2 عبارة عن نسخة من العمود 1 تعويض عن 1 ، ثم

> dataframe
$column1
[1] 1 2 3 4 5

$column2
[1] 0 1 2 3 4

لقد حققت بعض النجاح في الكود التالي:

offset7 <- rep(0, 7)
dataframe$column1.prev7 = c(offset7, dataframe$column1[1:(length(dataframe$column1)-7)])

ومع ذلك ، فإنه يبدأ في إعطاء الأخطاء إذا تعوضت عن 30 أو أكثر. بياناتي طويلة بما يكفي حتى لا تكون هذه مشكلة في الإزاحة أكبر من عدد الصفوف. الخطأ هو:

Error in dataframe$column1[1:(length(dataframe$column1) - 30)] : 
  only 0's may be mixed with negative subscripts

شكرا لك مقدما! سيتم تفضيل نسخة مجانية حلقة سريعة تلعب مع Plyr. القصد هنا هو تقسيم بيانات Timeseries إلى متخلفات مختلفة حتى عام ثم تحليل النتائج بطرق مختلفة.

هل كانت مفيدة؟

المحلول

رجاء استخدم فئة من الفئة الزمنية المناسبة لعمليات السلاسل الزمنية. المفضلة الشعبية حديقة حيوان و XTS كلاهما لهما وفرة من الوثائق.

كمثال بسيط ، ضع في اعتبارك

> library(xts)
> foo <- xts(100:109, order.by=Sys.Date()+0:9)
> merge(foo,  l1=lag(foo,1), lm1=lag(foo,-1))
           foo  l1 lm1
2010-11-18 100  NA 101
2010-11-19 101 100 102
2010-11-20 102 101 103
2010-11-21 103 102 104
2010-11-22 104 103 105
2010-11-23 105 104 106
2010-11-24 106 105 107
2010-11-25 107 106 108
2010-11-26 108 107 109
2010-11-27 109 108  NA
> 

لكن فقط لا تفعل ذلك باليد. وابحث هنا عن [r] xts" أو [R] Zoo "للبحث في علامة R.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top