2017-05-19 2 views
1

私は次の列を含むdfをスーパーポピュレーションIDで持っています。データフレームに列を作成して情報を埋め込むための論理的順序

EUR 
EUR 
EUR 
AMR 
AMR 
AFR 
AMR 
AFR 
EUR 
SAS 
EUR 
... 

と私はのがでポイントを着色するsuperpopulationsを識別するために、色の名前を持つ必要が¨pcolors¨という名前の列を、言わせて、別の列を構築するために(後でscatterplot3dを使用する)必要があります。それはCOLNAMEがSuperpopありますプロット。私は出力としてこれをしたい:

EUR red 
EUR red 
EUR red 
AMR blue 
AMR blue 
AFR green 
AMR blue 
AFR green 
EUR red 
SAS yellow 
EUR red 
... ... 

事は、彼らがソートされていない、とDFが2524行の長であるので、私は手動でそれを行うことはできませんし、私はそれをソートしないことを好むだろうということですの理由他の列の順序たとえば、別の列を生成する論理的な機能があり、その行にSuperpop == EURがある場合は、その行にpcolor列の¨redを書いてください。私は5 superpopulations持っている?何かご意見は?ありがとう!

+0

IDと関連付けられた色でルックアップテーブルを作成してから、テーブルを元のデータにマージします。 – www

答えて

3

これはかなりシンプルです:

pcolors <- unsplit(superpop, value = colors()) 

value-parameterで希望する色を選択できます。

+1

ありがとう!それは完璧に働いた! :) – melunuge92

2

サブスクリプトを使用してください。あなたは、このような色の名前のベクトルを作成することができます。

pcolor <- c(EUR = "red", AMR = "blue", AFR = "green", SAS = "yellow") 

その後、

場合
df <- data.frame(Superpop = c("EUR","EUR","EUR","AMR","AMR","AFR","AMR","AFR","EUR","SAS","EUR")) 

をあなただけ

df$color = pcolor[as.character(df$Superpop)] 

その後dfがない場合:

Superpop color 
1  EUR red 
2  EUR red 
3  EUR red 
4  AMR blue 
5  AMR blue 
6  AFR green 
7  AMR blue 
8  AFR green 
9  EUR red 
10  SAS yellow 
11  EUR red 
+0

ありがとう!良い答えですが、私はMajoのものを使っていました。なぜなら、それは短くてトリックをやったからです。しかし、今私は2つの方法があります – melunuge92

+1

@ melunuge92私はまたマホの答えから何かを学びました。 Rには、同じ目的を達成するためのいくつかの方法があります。 –

+1

正直言って私は何かを答えて学んだよ:) – Majo

関連する問題