أدخل أرقامًا تسلسلية بدون نهاية محددة في عمود إطار البيانات في r

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

سؤال

أرغب في إعطاء سلسلة من الأرقام لعمود جديد في إطار البيانات.ولكن هذا التسلسل سوف يتكرر عدة مرات بناءً على قيمة في عمود آخر.(أي يبدأ من 1 حتى يتم تغيير تلك القيمة المحددة إلى قيمة أخرى).

مشكلتي هي كيفية تحديد نقطة النهاية لكل تسلسل في r.

جزء من إطار البيانات الخاص بي مع العمود "V2" الذي أنوي إضافته:

  V1      V2(new added column with sequential numbers)           
  12      1
  12      2
  12      3
  12      4
  12      5
  13      1
  13      2
  13      3
  13      4
  13      5
  13      6
  14      1
  14      2
  14      3
  14      4

حاولت استخدام الكود التالي ولم يعمل!

count <- table(df$V1)
c <- as.integer(names(count)[df$V1==12])
    repeat{
      df$V2<- seq(1,c, by=1)
      if(df$V1!=12){
        break
      }
    }
هل كانت مفيدة؟

المحلول

يبدو أنك قد تبحث عنه rle نظرًا لأنك مهتم في أي وقت بالمتغير "V1". التغييرات.

حاول القيام بما يلي:

> sequence(rle(df$V1)$lengths)
 [1] 1 2 3 4 5 1 2 3 4 5 6 1 2 3 4

نصائح أخرى

RLE هو حل جيد للغاية ولكن يمكنك أيضا استخدام AVE:

giveacodicetagpre.

hth

حسنا، يدق Ananda جهدي:

giveacodicetagpre.

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