ベクター内の特定の値の後にアイテムが発生するかどうかに基づいて、ベクター内のアイテムを再コーディングするアプローチを考案しようとしています。被験者ごとの最初の暴露の月を示す列を含む無傷のデータセット (被験者ごとにグループ化された時系列) を取得しました (この列には、暴露の欠如を表す NA と、暴露が発生した月を表す "G" があります)。被験者が「暴露」されたら、その被験者の観察期間の終わりまで暴露されたことを示すために、その被験者のベクトルが必要です。これは、一部を取り除いた例と、ある程度は機能するソリューションですが、すべての場合に必要なわけではありません。
x2 <- c("G", NA, NA, NA, NA)
solution <- c(rep(1, length(x2)- length(rep("G", (length(x2)+1 )- which(x2=="G")))), rep("G", (length(x2)+1 )- which(x2=="G")))
この場合、ソリューションは次のようになります。
> solution
[1] "G" "G" "G" "G" "G"
とはいえ、「G」を含まないベクトルに直面すると、ソリューションは壊れます
x2 <- c(NA, NA, NA, NA, NA)
solution <- c(rep(1, length(x2)- length(rep("G", (length(x2)+1 )- which(x2=="G")))), rep("G", (length(x2)+1 )- which(x2=="G")))
Error in rep("G", (length(x2) + 1) - which(x2 == "G")) :
invalid 'times' argument
したがって、1 日の終わりに、ソリューション ベクトルは次の条件を満たす必要があります。1) 元のベクトルと同じ長さ (この場合は x2) であり、かつ 2) 最初の「G」の後にすべての位置に値「G」が含まれている必要があります。元のベクトルで
もう 1 つ、グループ化係数を介して plyr に渡すことができる何らかの形式のソリューションが必要です (大規模なデータセットの係数でグループ化された多くのベクトルを再コード化する必要があるため)。
よろしくお願いします!クリス