以下の構造を持つデータセットがあります。データフレーム内の一連の行にまたがる要素を検索します。
# example data set
a <- "a"
b <- "b"
d <- "d"
id1 <- c(a,a,a,a,b,b,d,d,a,a,d)
id2 <- c(b,d,d,d,a,a,a,a,b,b,d)
id3 <- c(b,d,d,a,a,a,a,d,b,d,d)
dat <- rbind(id1,id2,id3)
dat <- data.frame(dat)
私は繰り返し要素と各列を横切っ最初シーケンスを見つける必要がある「」と直ちにシーケンスを次の要素を識別する。
# desired results
dat$s3 <- c("b","b","d")
dat
は、私が最初のものを3つの段階で問題を打破し、解決することができましたが、私のプログラミングのスキルは非常に限られているとして、私はあなたのアイデアを持っている場合は、手順2と3にアプローチする方法について何かアドバイスをいただければ幸いですそれは他の方法で問題を解決します。それは非常に役立つでしょう。ここで
は、私がこれまで持っているものです:事前に
# Step 1: find the first occurence of "a" in the fist sequence
dat$s1 <- apply(dat, 1, function(x) match(a,x))
# Step 2: find the last occurence in the first sequence
# Step 3: find the element following the last occurence in the first sequence
ありがとう!
二重の 'max.col'を使って解決策を試すことができます:簡単に言えば、' a1 = max.col(dat == "a"、 "first") 'は最初に" a "と表示されます。 'dat!=" a "の" cbind(rep(seq_along(a1)、a1)、sequence(a1)) 'インデックスを" a "に置き換え、' dat!= "a" max.col "列インデックス。 –