将具有数字和NA值的矢量转换为具有二进制值的矢量

时间:2016-07-19 13:10:45

标签: r missing-data

我想将具有负值(-inf,0]NA的矢量转换为0,将所有正值(0,inf)转换为R中具有二进制变量的相同新矢量以供使用在逻辑回归中。

更具体地说,我的数据集med由带有向量的矩阵组成,可以使用med$Amount_total检索。该向量由-10,000到100,000以及NA值组成。我想将这些转换为0,代替负值,0和NA值的向量,并将所有正值转换为1,以便在glm(逻辑回归模型)中使用,我将适合其他向量在医学中。

示例:

input <- c(50,NA,-4,32,0,0,12)
desired_output <- c(1,0,0,1,0,0,1)

2 个答案:

答案 0 :(得分:1)

你可以这样做:

a=c(50,NA,-4,32,0,0,12)
(a>0 &!is.na(a)) + 0

a是您的输入向量,在括号内有您所需条件的组合。它创建一个TRUE / FALSE的逻辑向量。要将其转换为布尔向量,您可以使用as.numeric将其强制为数字或添加零,这具有相同的效果。

#### [1] 1 0 0 1 0 0 1

答案 1 :(得分:1)

我们可以尝试

as.integer(replace(v1, is.na(v1)|v1 < 0, 0)!=0)

或者

as.integer(!(is.na(v1) | v1 <= 0))
#[1] 1 0 0 1 0 0 1