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

问题描述 投票:0回答:3

使用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
r
3个回答
0
投票

你的意思是记录所有变量吗?愿这种方法有用:

data %>% 
  mutate_all(.,~case_when(. > 14.4 ~ TRUE, TRUE ~ FALSE))

0
投票

它通过使用ifelse函数解决,如提到joran。

data$Target <- ifelse(data$Target > 14.4, "TRUE", "FALSE")

0
投票

如果你想要一个data.table解决方案:

setDT(data)
data[, Target := ifelse(Target > 14.4, "TRUE", "FALSE")]

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

© www.soinside.com 2019 - 2024. All rights reserved.