使用Friendman1函数,如果值大于/小于或等于14.4,我想创建一个数据框,用值TRUE
/ FALSE
替换目标列。
library(mlbench)
dataset <- mlbench.friedman1(1600)
colnames(dataset$x) <- paste("Attr.", 1:10, sep="")
data <- data.frame(dataset$x, dataset$y)
colnames(data)[11] <- "Target"
data$Target[data$Target > 14.4] <- "TRUE"
data$Target[data$Target <= 14.4] <- "FALSE"
问题在于除了值&lt;比10。
所以最终结果将是:
Attr.1 ... Attr.10 Target
0.8356 ... 0.05367 TRUE
0.9723 ... 0.29951 5.7792
0.5623 ... 0.15223 FALSE
答案 0 :(得分:0)
你的意思是重新编码所有变量吗?愿这种方法有用:
data %>%
mutate_all(.,~case_when(. > 14.4 ~ TRUE, TRUE ~ FALSE))
答案 1 :(得分:0)
使用ifelse
函数解决了这个问题,如joran。
data$Target <- ifelse(data$Target > 14.4, "TRUE", "FALSE")
答案 2 :(得分:0)
如果您需要data.table解决方案:
setDT(data)
data[, Target := ifelse(Target > 14.4, "TRUE", "FALSE")]
我建议你不要覆盖原始变量并使用新类(字符,逻辑等)创建不同的变量。