如果它大于该列的平均值,则替换 Dataframe 中的值

Replacing values in Dataframe if its more than the mean of that column

数据框中有三列。什么可以是 R 中的优化代码,它可以首先检查值是否超过特定变量的平均值,然后用平均值替换它。 P.S:三个变量的均值不同。

此处的一个基本选项是使用 ifelse() 函数创建新变量。对于优化代码,您可以使用 data.table 包。

data <- mtcars[, 1:3]

library(data.table)
setDT(data)
# look at means
mean(data$mpg) #20.09062
mean(data$cyl) #6.1875
mean(data$disp) #230.7219

# new variables
data[, mpg_new := ifelse(mpg > mean(mpg), mean(mpg), mpg)]
data[, cyl_new := ifelse(cyl > mean(cyl), mean(cyl), cyl)]
data[, disp_new := ifelse(disp > mean(disp), mean(disp), disp)]