2016-12-05 2 views
2

の値に基づいて、列の値を選択し、返す私は別の列の値に基づいて、列のサブセットの1つに含まれている列の値を選択して返すようにしたいと思います。R - 別の列

具体的には、MAX変数= "RP"のときはREの値を選択し、MAX変数が "IP"のときはIEの値を選択して新しい変数( "NEWE")を作成します。注目すべきは

、私は(私はV1-V9を含めることによって、私の例では、追加の列の存在に注目しています)〜160列と〜7万行のデータテーブルで働いています。

は持っている:

V1 … V9 RE IE MAX 
4 … 3 3 4 RP 
6 … 6 3 2 IP 
2 … 2 1 2 IP 
6 … 2 2 3 RP 
. . . . . . 
. . . . . . 
. . . . . . 

そして、私は希望のデータセット:あなたの助けを事前に

V1 … V9 RE IE MAX NEWE 
4 … 3 3 4 RP 3 
6 … 6 3 2 IP 2 
2 … 2 1 2 IP 2 
6 … 2 2 3 RP 2 
. . . . . . . 
. . . . . . . 
. . . . . . . 

感謝を!

+0

あなたは 'ifelse'を使用してみたのですか? –

+0

"RP"と "IP"のちょうど間にありますか? –

+0

いいえ、手順は6つの異なる列の間の2回の反復で実行されます – Justin

答えて

4
data$NEWE <- ifelse(data$MAX == "RP", data$RE, ifelse(data$MAX == "RP",data$IE, "value if both doesn't satify")) 

その常にRPとIPのいずれかであれば!

あなたのケースのための
data$NEWE <- ifelse(data$MAX == "RP", data$RE , data$IE) 

:ifelseのその単純な拡張 - (タイプミスを避けるためには、()を使用して好む)

data$NEWE <- with(data, ifelse(MAX == "RP", RE, 
           ifelse(MAX == "IP",IE, 
            ifelse(MAX == "AP", AE, 
              ifelse(MAX == "SP", SE, 
                ifelse(MAX == "EP",EE, 
                 ifelse(MAX == "CP", CE, NA))))))) 
関連する問題