異なる地域の350-600戸の農家に〜250の変数からなるデータセットがあります。データは非常に乱雑であり、分析に多くの問題を提示しています。私はRには新しいので、下のどのような助けも大歓迎です。元々、いくつかの列に複数の変数が含まれていました。 まで4までの入力(肥料、除草剤、農薬、およびハイブリッド種子)を含む「インプット」列。 tidyr
にspread()
関数を使用して、4つの新しい変数(Input_1 ... Input_4)を作成しました。データフレーム内の列のサブセットをループして新しい変数を作成する方法
Input_1 <- c("Fertilisers", "Fertilisers", "Fertilisers", "Fertilisers", NA)
Input_2 <- c("Hybrid_Seeds", "Hybrid_Seeds", "Pesticides", "Herbicides", NA)
Input_3 <- c(NA, NA, NA, "Pesticides", NA)
Input_4 <- c(NA, NA, NA, "Hybrid_Seeds", NA)
x <- data.frame(Input_1, Input_2, Input_3, Input_4)
x
Input_1 Input_2 Input_3 Input_4
1 Fertilisers Hybrid_Seeds <NA> <NA>
2 Fertilisers Hybrid_Seeds <NA> <NA>
3 Fertilisers Pesticides <NA> <NA>
4 Fertilisers Herbicides Pesticides Hybrid_Seeds
5 <NA> <NA> <NA> <NA>
私は何をしたいと考えていますが、これらの新たに発生した「入力のそれぞれをループしている。その結果、新たに「入力」変数は、各行は単一農家を表し、次のシミュレートデータフレーム、のように見えます(例えば "肥料"または "殺虫剤")を検索し、結果を4つのタイプの入力のそれぞれについて新しい変数に「はい/いいえ」形式で入力します。データセット(肥料、農薬、除草剤およびハイブリッド種子)。言い換えれば、上記x
上のループからの結果は、新しく作成された「はい/いいえ」の変数の次の列が生成されます。
Fertilisers <- c("Yes", "Yes", "Yes", "Yes", "No")
Herbicides <- c("No", "No", "No", "Yes", "No")
Pesticides <- c("No", "No", "Yes", "Yes", "No")
Hybrid_Seeds <- c("Yes", "Yes", "No", "Yes", "No")
x2 <- data.frame(Fertilisers, Herbicides, Pesticides, Hybrid_Seeds)
x2
Fertilisers Herbicides Pesticides Hybrid_Seeds
1 Yes No No Yes
2 Yes No No Yes
3 Yes No Yes No
4 Yes Yes Yes Yes
5 No No No No
時にデータフレームx
私が望むものを視覚化することが容易とすることができ、 x2
は一つに結合されている:4つの入力が特定の順序に従う
x3 <- data.frame(x, x2)
x3
Input_1 Input_2 Input_3 Input_4 Fertilisers Herbicides
1 Fertilisers Hybrid_Seeds <NA> <NA> Yes No
2 Fertilisers Hybrid_Seeds <NA> <NA> Yes No
3 Fertilisers Pesticides <NA> <NA> Yes No
4 Fertilisers Herbicides Pesticides Hybrid_Seeds Yes Yes
5 <NA> <NA> <NA> <NA> No No
Pesticides Hybrid_Seeds
1 No Yes
2 No Yes
3 Yes No
4 Yes Yes
5 No No
、すなわち肥料は常に最初(INPUT_1)であろう家庭で肥料を使用している場合、彼らは両方の肥料や除草剤を使用する場合、除草剤はINPUT_2なり(IF彼らは肥料と農薬を使用しますが、除草剤は使用しません。控除はInput_2などとなります。家計が4つのインプットをすべて使用する場合は、以下の順序で表示されます(上記の4行目を参照):肥料、除草剤、農薬、ハイブリッド種。
私はすべての4つの入力変数をループし、一致する文字列を検索し、関連する新しい入力変数に「Yes」を入力しようとしました(たとえば、 "肥料" "は4つの既存の"入力 "変数のいずれかにあります)、私はそれほど成功を収めていません。
この問題は、apply
ファミリの解決策ではないように思われますが、私は訂正されてうれしいです。繰り返しますが、私は一般的にRとプログラミングに新しいので、どんな助けも大歓迎です。私はfor
ループでの経験は(非常に限られた)経験していますが、この問題は私にとっては非常に複雑であることが証明されており、解決には非常に重要です。
ありがとうございます。