0
私は以下のようなデータフレームを持っています。列の範囲に文字列が含まれている場合は、新しい列を追加してください。
ContainsANZ:私は2列を追加したいと思いF3へのF0から任意の列が含まれている「オーストラリア」かどうかを示しますか 'ニュージーランド無視NAは
AllANZ値:すべての非NAの列が含まれているかどうかを示します "オーストラリア」または 'ニュージーランド
開始データフレームは次のようになります。
:dfContainsANZ
Col.A Col.B Col.C F0 F1 F2 F3
1 data 0 xxx Australia Singapore <NA> <NA>
2 data 1 yyy United States United States United States <NA>
3 data 0 zzz Australia Australia Australia Australia
4 data 0 ooo Hong Kong London Australia <NA>
5 data 1 xxx New Zealand <NA> <NA> <NA>
最終的な結果は次のようになります。 10
私はdplyr(推奨ソリューション)を使用していますが、このようなコードは、うまくいかず、非常に反復的です。 F0 | F1 | F2 ...の規則をもう一度コピーする必要がないように、これを書き込む方がいいですか?私の実際のデータセットにはより多くのものがあります。 NAsはコードに干渉していますか?
df <- df %>%
mutate(ANZFlag =
ifelse(
F0 == 'Australia' |
F1 == 'Australia' |
F2 == 'Australia' |
F3 == 'Australia',
'Australia',
ifelse(
F0 == 'New Zealand' |
F1 == 'New Zealand' |
F2 == 'New Zealand' |
F3 == 'New Zealand',
'New Zealand', 'undefined'
)
)
)
あなたは 'rowSums(DF [paste0(のようなスピードワイズ非常に競争力のあることを行うことができます"F"、0:3)] == "Australia"、na.rm = TRUE)> 0 "を使用して特定の値が存在するかどうかを調べます。 – thelatemail
ありがとう、それは本当に便利です。 hrbrmstrの解決策をそれに与えます。 – LoLo