使用Friendman1函数,如果value大于/小于或等于14.4,我想创建一个数据框,用值TRUE
/ FALSE
替换Target列。
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"
问题是,除了<10以外的值,它才能找到它。
因此,最终结果将是:
Attr.1 ... Attr.10 Target
0.8356 ... 0.05367 TRUE
0.9723 ... 0.29951 5.7792
0.5623 ... 0.15223 FALSE
你的意思是记录所有变量吗?愿这种方法有用:
data %>%
mutate_all(.,~case_when(. > 14.4 ~ TRUE, TRUE ~ FALSE))
它通过使用ifelse
函数解决,如提到joran。
data$Target <- ifelse(data$Target > 14.4, "TRUE", "FALSE")
如果你想要一个data.table解决方案:
setDT(data)
data[, Target := ifelse(Target > 14.4, "TRUE", "FALSE")]
我建议你不要覆盖一个原始变量,并用一个新类(字符,逻辑等)创建一个不同的变量。