【发布时间】:2018-02-21 22:24:55
【问题描述】:
我有一个包含数字和因子变量组合的数据框。
我正在尝试用 NA 递归替换所有异常值(3 x SD),但是我遇到了以下错误的问题
Error in colMeans(x, na.rm = TRUE) : 'x' must be numeric
我使用的代码是
name = factor(c("A","B","NA","D","E","NA","G","H","H"))
height = c(120,NA,150,170,NA,146,132,210,NA)
age = c(10,20,0,30,40,50,60,NA,130)
mark = c(100,0.5,100,50,90,100,NA,50,210)
data = data.frame(name=name,mark=mark,age=age,height=height)
data
data[is.na(data)] <- 77777
data.scale <- scale(data)
data.scale[ abs(data.scale) > 3 ] <- NA
data <- data.scale
关于如何使它工作的任何建议?
【问题讨论】:
-
包含reproducible example 会让其他人更容易帮助您。
-
如果你在谈论异常值,你的变量可能不应该是一个因素
-
您正在对不只包含数值的数据框进行数学应用。使用
data = data.frame(mark=mark,age=age,height=height),不使用name列。运行其余代码并在末尾添加行data<-cbind(name,data)。