2016-12-05 196 views
2

我想根据另一列中的值选择并返回列的一个子集中的列值。R - 根据另一列中的值选择并返回列值

具体来说,我想通过在MAX变量=“RP”时选择RE中的值并在MAX变量=“IP”时选择IE中的值来创建新变量(“NEWE”)。

值得注意的是,我正在处理约160列和约70,000行的数据表(我注意到在我的示例中包含V1-V9的附加列的存在)。

有:

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

不,程序将在两个迭代之间进行六个不同的列 – 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))))))) 
相关问题