Dataframe 对矩阵进行排序
我想winsorize一个矩阵,有6列,非NA,没有无限值 我使用Dataframe 对矩阵进行排序,dataframe,Dataframe,我想winsorize一个矩阵,有6列,非NA,没有无限值 我使用robustHD包和代码 winsorize(df) 但我收到以下错误消息: 特征值(R,对称=真)中的错误:“x”中的值无限或缺失 有人知道问题出在哪里吗?或者我可以用另一个软件包试试别的方法吗?Winsorizing非常简单,而且非常灵活。创建自己设计的功能很容易。困难的部分是决定什么样的设计最合适 一个例子 set.seed(1) mat <- matrix(sample(-99:99, 30), 6) ran
robustHD
包和代码
winsorize(df)
但我收到以下错误消息:
特征值(R,对称=真)中的错误:“x”中的值无限或缺失
有人知道问题出在哪里吗?或者我可以用另一个软件包试试别的方法吗?Winsorizing非常简单,而且非常灵活。创建自己设计的功能很容易。困难的部分是决定什么样的设计最合适 一个例子
set.seed(1)
mat <- matrix(sample(-99:99, 30), 6)
ran <- quantile(mat, c(0.20, 0.80))
mat.w <- mat
mat.w[mat < ran[1]] <- ran[1]
mat.w[mat > ran[2]] <- ran[2]
mat.w - mat
# [,1] [,2] [,3] [,4] [,5]
# [1,] 0.0 -38.8 0.0 0.0 0.0
# [2,] 0.0 0.0 0.0 0.0 0.0
# [3,] 0.0 0.0 0.0 -23.8 36.8
# [4,] -34.8 27.8 0.0 1.8 0.0
# [5,] 0.0 0.8 0.0 0.0 -4.8
# [6,] -30.8 5.8 -36.8 16.8 0.0
这种基于百分位数的制胜方式可能是最常见的方法,但对于如何制胜没有真正的限制或规则 例如,我们可以基于与平均值的偏差
cen <- mean(mat)
range(mat - cen)
# -91.8 88.2
cen
cen <- mean(mat)
range(mat - cen)
# -91.8 88.2
mat.w <- mat
mat.w[mat - cen < -70] <- -70
mat.w[mat - cen > 70] <- 70
mat.w - mat
# [,1] [,2] [,3] [,4] [,5]
# [1,] 0 -13 0 0 0
# [2,] 0 0 0 0 0
# [3,] 0 0 0 2 27
# [4,] -9 18 0 0 0
# [5,] 0 0 0 0 0
# [6,] -5 0 -11 7 0