替换R数据帧中的值的问题

时间:2017-12-17 18:15:12

标签: r

使用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

3 个答案:

答案 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")]

我建议你不要覆盖原始变量并使用新类(字符,逻辑等)创建不同的变量。