R - 根据另一列

时间:2016-12-05 18:19:40

标签: r

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

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

值得注意的是,我正在使用大约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
.   .   .   .   .   .   .
.   .   .   .   .   .   .
.   .   .   .   .   .   .

提前感谢您的帮助!

1 个答案:

答案 0 :(得分: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的简单扩展 - (以避免拼写首选使用with())

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)))))))