我想根据另一列中的值选择并返回一个列子集中包含的列值。
具体来说,我想通过在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
. . . . . . .
. . . . . . .
. . . . . . .
提前感谢您的帮助!
答案 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)))))))