我已经通过连续变量的值按降序对分析数据集进行了排序,并且希望为前200行中的记录创建指示符变量y = 1,否则为y = 0.
我第一次遇到这个问题:
train1 <- train1[order(-train1$ALWAMT_FOLLOWING),]
train1$y <- ifelse(train1[1:200,], 1, 0)
Run Code Online (Sandbox Code Playgroud)
返回错误:
Error in ifelse(train1[1:200, ], 1, 0) :
(list) object cannot be coerced to type 'logical'
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢!
不要ifelse()
为此而烦恼.您可以使用创建矢量rep()
.
train1$y <- rep(1:0, c(200, nrow(train1) - 200))
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用具有行计数的逻辑向量的整数表示.
train1$y <- as.integer(seq_len(nrow(train1)) <= 200)
Run Code Online (Sandbox Code Playgroud)
ifelse()
用于根据测试返回值.
在这里,您只想根据索引而不是数据给出不同的值,因此最简单的可能是:
train1$y <- 0
train1[1:min(200, nrow(train1)),]$y <- 1
Run Code Online (Sandbox Code Playgroud)