如果行号在 1:200 之间,则创建变量 y=1
Create variable y=1 if row number between 1:200
我已按连续变量的值降序对我的分析数据集进行排序,并想为前 200 行中的记录创建一个指示变量 y=1,否则为 y=0。
我第一次解决这个问题:
train1 <- train1[order(-train1$ALWAMT_FOLLOWING),]
train1$y <- ifelse(train1[1:200,], 1, 0)
returns错误:
Error in ifelse(train1[1:200, ], 1, 0) :
(list) object cannot be coerced to type 'logical'
非常感谢任何帮助!
ifelse()
用于 return 基于测试的值。
这里你只是想根据索引给出不同的值,而不是数据,所以最简单的可能是:
train1$y <- 0
train1[1:min(200, nrow(train1)),]$y <- 1
不要为此烦恼ifelse()
。您可以使用 rep()
创建向量。
train1$y <- rep(1:0, c(200, nrow(train1) - 200))
或者您可以将逻辑向量的整数表示与行数一起使用。
train1$y <- as.integer(seq_len(nrow(train1)) <= 200)
这是另一个解决方案 ifelse
,
rain1$y <- ifelse(order(rain1$ALWAMT_FOLLOWING) <= 200, 1, 0)
我已按连续变量的值降序对我的分析数据集进行排序,并想为前 200 行中的记录创建一个指示变量 y=1,否则为 y=0。
我第一次解决这个问题:
train1 <- train1[order(-train1$ALWAMT_FOLLOWING),]
train1$y <- ifelse(train1[1:200,], 1, 0)
returns错误:
Error in ifelse(train1[1:200, ], 1, 0) :
(list) object cannot be coerced to type 'logical'
非常感谢任何帮助!
ifelse()
用于 return 基于测试的值。
这里你只是想根据索引给出不同的值,而不是数据,所以最简单的可能是:
train1$y <- 0
train1[1:min(200, nrow(train1)),]$y <- 1
不要为此烦恼ifelse()
。您可以使用 rep()
创建向量。
train1$y <- rep(1:0, c(200, nrow(train1) - 200))
或者您可以将逻辑向量的整数表示与行数一起使用。
train1$y <- as.integer(seq_len(nrow(train1)) <= 200)
这是另一个解决方案 ifelse
,
rain1$y <- ifelse(order(rain1$ALWAMT_FOLLOWING) <= 200, 1, 0)