如果NA 1 else -1,则创建虚拟变量

问题描述 投票:0回答:1

我想创建一个虚拟对象,其中所有包含NA的单元格都变为1,所有其他单元格都变为-1。我尝试了不同的事情,但都没有达到预期的效果。

1)这仅导致NA值。

Cox.Reg$FirstTask <- ifelse(Cox.Reg$active_task_avg_depth == NA, 1, -1)

2)这导致在新列中仅显示-1值。

Cox.Reg$FirstTask <- ifelse(Cox.Reg$active_task_avg_depth == "NA", 1, -1)  
r dummy-variable
1个回答
1
投票

[如果它是真实的NA,那么我们可以使用is.na来检测NA元素,这将对所有TRUE返回NA,对其他FALSE返回作为逻辑矢量,这可以在ifelse中使用以更改值

ifelse(is.na(Cox.Reg$active_task_avg_depth), 1, -1)

或者另一个选择是创建数字索引并相应地更改值

c(-1, 1)[is.na(Cox.Reg$active_task_avg_depth) + 1]
© www.soinside.com 2019 - 2024. All rights reserved.