Rのデータフレームの列に特定の終了なしでシーケンシャル番号を入力
-
21-12-2019 - |
質問
私はデータフレームに新しい列に数字を渡したいと思います。しかし、このシーケンスは別の列の値に基づいて数回繰り返されます。(すなわち、その特定の値が他の値に変更されるまで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)
}
. 所属していません StackOverflow