質問

私はデータフレームに新しい列に数字を渡したいと思います。しかし、このシーケンスは別の列の値に基づいて数回繰り返されます。(すなわち、その特定の値が他の値に変更されるまで1から始まります)。

私の問題は、Rの各シーケンスの終了点を定義する方法です。

データフレームの一部列 "v2"が追加対象となる "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
      }
    }
.

役に立ちましたか?

解決

あなたが興味があるので、 "v1" variable changes

を興味を持っているので、あなたがrleを探しているかもしれません。

次のことを試してください:

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

他のヒント

leleは非常に良い解決策ですが、あなたはまたAVEを使ったことができました:

tab$V2 <- ave(tab$V1, tab$V1, FUN=seq_along)
.

hth

アナンダが私の努力を鼓動させる:

vec = numeric(0)
for(i in unique(df$V1)){
  n = length(df$V1[df$V1 == i])
  vec = c(vec, 1:n)
}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top