我有一個數據集,其結構如下所示。查找數據框中跨行的序列之後的元素
# 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」中用'a'替換'cbind(rep(seq_along(a1),a1),sequence(a1))'datat'的索引並調用'max.col'應該返回通緝列索引。 –