我有幾個數據集,由不同地區的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種類型輸入(Fertilizers,Pesticides ,除草劑和混合種子)。換句話說,從環路上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
合併成一個時:
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
的4個輸入按照一定的順序,即肥料將始終是第一(INPUT_1)如果該家庭使用肥料,除草劑會INPUT_2如果它們同時使用肥料和除草劑(如果他們使用肥料和農藥但不使用除草劑,然後使用Pestic IDE將是Input_2等。如果家庭使用全部4個輸入,它們將按以下順序出現(參見上面的第4行):肥料,除草劑,殺蟲劑,混合種子。
我試圖創建for
循環來遍歷所有4個輸入變量,尋找匹配的字符串,並在關聯的新輸入變量中輸入「是」(例如,如果匹配「Fertilizers」 「可以在4個現有的」輸入「變量中找到),但是我沒有取得太大的成功。
看起來好像沒有apply
家庭解決方案,但我很樂意被糾正。再說一遍,我對R和編程一般都很陌生,所以任何幫助都將不勝感激。我對for
循環確實有非常有限的經驗,但這個問題對我來說已經證明過於複雜,解決這個問題非常關鍵,因爲這是我在研究中前進的主要障礙。
非常感謝。