我想创建几个变量 0/1,它们满足具有不同截止点的条件。使用 50 到 100 的间隔,我想为这两个数字之间的每个点创建一个 0/​​1 变量,其中 0 小于,其他均为 1。

例如:
data1$V1<-ifelse(data1$Value<50, 0, 1)
其中 data1$Value 具有区间信息,data1$V1 是第一个使用 50 作为截止值的二进制向量,但 data1$V2 将是 51,依此类推。

一些可重现的代码作为入门:

    data1<-data.frame(Value=sample(1:120, 50, replace=TRUE))
    data1$V1<-ifelse(data1$Value<50, 0, 1)
    data1$V2<-ifelse(data1$Value<51, 0, 1)
    data1$V3<-ifelse(data1$Value<52, 0, 1)

我怎样才能用循环来做到这一点?

最佳答案

也许,这对你有用:

data1<-data.frame(Value=sample(1:120, 50, replace=TRUE))

r <- 1:50
vars <- paste0('V', r)
const <- 50

for (i in seq_along(vars)){
  data1[[vars[i]]] <- ifelse(data1$Value<const+i-1, 0, 1)
}

关于r - 通过在循环中更改条件来创建多个二分变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57871247/

10-12 17:06