我想将具有负值(-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)
答案 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