2017-12-07 2 views
-1

私はデータフレームにUNによって命名された198の国を持っています。私は大陸でこれらの国々を分ける新しい変数を作りたいと思っています。大陸 - 新しい変数の作成 - R

私がこれまでに以下のコードを使用している:

attach(df) 
df$Continent[Country==c('country', 'country', ...)] <- "Americas" 
df$Continent[Country==c('country', 'country', ...)] <- "Africa" 
df$Continent[Country==c('country', 'country', ...)] <- "Asia" 
df$Continent[Country==c('country', 'country', ...)] <- "Europe" 
df$Continent[Country==c('country', 'country', ...)] <- "Oceania" 
detach(df) 

問題は、警告メッセージ「を表示し、Rは私が同じブラケットの各大陸のために利用可能なすべての国の名前を入れてみましょうしないということです長いオブジェクト長は短いオブジェクト長さの倍数ではありません。複数の国を分けると、私はそれを作ることができます。しかし、これは非常に非効率的なので、それを行うには巧妙な/最速の方法があるのだろうか?

+1

'=='の代わりに '%in%'を使用すると、国のリストを最初に定義する方がクリーンかもしれません。 – LyzandeR

答えて

1

LyzandeR statedとすると、%in%演算子を使用できます。

americas <- c("country", "country", "country", ...) 
africa <- c("country", "country", "country", ...) 
asia <- c("country", "country", "country", ...) 
# and so on... 

attach(df) 
df$Continent[Country %in% americas] <- "Americas" 
df$Continent[Country %in% africa] <- "Africa" 
df$Continent[Country %in% asia] <- "Asia" 
df$Continent[Country %in% europe] <- "Europe" 
df$Continent[Country %in% oceania] <- "Oceania" 
detach(df) 
関連する問題