2016-11-04 3 views
0

私は、人の毎日の出席を追跡する「出席」という変数を持っています。それに「a」が含まれている場合は、最初の日に出席し、「b」は2日目に出席した場合、5日目に出席した場合は「e」まで続きます。したがって、最初の3日間、最後の3日間、または最初の/ 3日/最後の日にそれぞれ参加した人は、「abc」または「cde」または「ace」のように見えます。ループとgrep関数in R

ここで、「出席」に「a」が含まれている場合は1に等しい変数「day_1」を作成し、そうでない場合は0を作成します。次に、 "出席"に "b"が含まれている場合は2に、そうでない場合は0になる変数 "day_2"があります。 「day_5」まで続きます。

私はgrep関数を使用して手動で試してみました。これまでに試したことは次のとおりです。

test <- data.frame(hhid = c(1:5),attendance=c("abc","bcd","d","ec","ade")) 
    test$day_1 <- 0 
    test$day_2 <- 0 
    test$day_3 <- 0 
    test$day_1[grep("a", test$attendance, "day_1")] <- "1" 
    test$day_2[grep("b", test$attendance, "day_2")] <- "1" 
    test$day_3[grep("c", test$attendance, "day_3")] <- "1" 

Rで実行する方法はありますか?

ありがとうございます!

+0

私たちが直接作業することができるように、サンプルの再生可能なデータを共有してください! –

答えて

0

サンプルデータを共有していないので、私はサンプルベクトルを作成してアイデアを得ました。

test <- data.frame(hhid = c(1:5),attendance=c("abc","bcd","d","ec","ade")) 
b = as.list(letters[1:5]) 

abc <- function(i){ 
    ifelse(grepl(b[[i]], test$attendance),1,0) 
} 
m=sapply(seq_along(b), abc) 
colnames(m)=paste("day",1:5,sep="_") 
test <- cbind(test,m) 
+0

例を追加しました。 – imprela

+0

あなたはソリューションを共有しようとしましたか?あなたの答えが –

+0

に基づいている場合は、私の答えを編集し、あなたの例を収容している特定の質問をしてください!これがあなたの質問に答えるかチェックしてください! –