私は、特定のレコードが3つの異なる領域にある特定のストア番号に関連付けられているかどうかを示すイエス/ノー数のデータセットを持っています(つまり、レコードは変数名は、「領域」_「storenumber」)としてフォーマットされている3つの領域のそれぞれに2つの店舗の1:ペーストを使ったネストされたforループ
var1_1 var1_2 var2_1 var2_2 var3_1 var3_2
1 Yes No No Yes Yes No
2 No Yes Yes No No Yes
3 No Yes Yes No No Yes
4 No Yes No Yes Yes No
5 No Yes No Yes No Yes
6 Yes No No Yes No Yes
7 Yes No Yes No Yes No
8 No Yes Yes No No Yes
私は「region_1」と呼ばれる地域ごとの変数を作成したいのですが(1または2)の「はい」の店舗番号と同じ「region_2」、「region_2」、および「region_3」を選択します。
region_1 region_2 region_3
1 1 2 1
2 2 1 2
3 2 1 2
4 2 2 1
5 2 2 2
6 1 2 2
7 1 1 1
8 2 1 2
次のように私はループに使用して別々の可変各領域を作成することができています:
for(i in 1:3) {
df[paste("region_", toString(i), sep = "")] <- ""
}
for(i in 1:2) {
df$region_1 <- ifelse(df[paste("var1_", toString(i), sep = "")] == "Yes" & df$region_1 == "", toString(i), df$region_1)
}
for(i in 1:2) {
df_1$region_2 <- ifelse(df_1[paste("var2_", toString(i), sep = "")] == "Yes" & df_1$region_2 == "", toString(i), df_1$region_2)
}
for(i in 1:2) {
df_1$region_3 <- ifelse(df_1[paste("var3_", toString(i), sep = "")] == "Yes" & df_1$region_3 == "", toString(i), df_1$region_3)
}
私の実際のデータは、多くの3つの以上の領域(地域ごとに2つ以上の店舗)を有しているので、よりもむしろ別個のループを書きます各地域ごとに、このループをすべての地域にわたってループするようにネストしたいと思います。私は、次のことをしようとしました:
for(j in 1:3) {
for(i in 1:2) {
df[paste("region_", toString(j), sep = "")] <- ifelse(df[paste("var", toString(j), "_", toString(i), sep = "")] == "Yes" & df[paste("region_", toString(j), sep = "")] == "", toString(i), df[paste("region_", toString(j), sep = "")])
}
}
はなく、すべてのレコードに対して同じ単一の値が移入各地域の変数で終わる「#### 1つの変数を置き換えるために、変数を提供」の警告を受け取ります。
私の入れ子になったループでどこが間違っているのでしょうか?
ありがとうございました!これはより "r"なアプローチのようです。質問 - これは、 'regions'という正しい変数を作成するだけでしょうか?どのように私は3つの別々の領域変数 'region_1'、' region_2'、 'region_3'を作成するためにこれを適応させるでしょうか? –
領域の列はすでにそれぞれの領域を探索していたので、領域[、x]を使用して領域xの値を取得できます。 「region_x」という名前で実際に参照する必要がある場合は、data.frameに変換してそれに応じて列名を付けることができます。方法を示すために編集されました。 – dww
それは分かりました。実際には、これらの変数は(残念なことに)厄介なデータセットで何百もの他の人の間で生きています。私の最初のループセットアップは、これを回避することを意図していました(例えば、ifelse(stores [、j] –