我有以下名为diamonds
的数据框。
X carat cut color clarity depth table price x y z
26450 1.53 Ideal G VVS1 61.8 55.0 15992 7.43 7.45 4.59
27696 0.40 Ideal G SI2 62.1 57.0 648 4.72 4.75 2.94
3596 0.90 Good J VS2 62.3 64.0 3423 6.09 6.17 3.82
45732 0.70 Good I SI2 63.4 59.0 1699 5.66 5.57 3.56
25894 1.50 Very Good F VS1 61.6 58.0 15022 7.35 7.43 4.55
4169 1.04 Ideal I SI2 61.9 56.0 3553 6.51 6.45 4.02
7721 0.26 Ideal F VS1 60.9 57.0 580 4.13 4.11 2.51
202 0.70 Premium E SI1 61.3 58.0 2777 5.71 5.68 3.49
8730 0.27 Good E VVS1 63.9 57.0 586 4.07 4.10 2.61
20109 1.50 Ideal G SI2 61.4 56.0 8580 7.34 7.38 4.52
我根据我的钻石数据框创建了2个新数据框,其中一个将有70%的数据称为train
,另一个将拥有其他30%的数据,test
数据框
通过以下两个功能,我从" train"中获得列均值和方差的列表。数据帧。
meanTrain <- lapply(train[,nums],mean)
varianceTrain<- lapply(train[,nums],sd)
现在我要做的是规范我的test
数据框。
为此,我必须从test
数据框中减去所有数字列(以选择数字列 - &gt; test [,nums])
来自train
数据框的均值,并将其除以train
数据框差异。
我一直在考虑它,这是我的代码。
escaladeTest <- apply(test[, nums], 2, function (col) (col - meanTrain[col])/varianceTrain[col])
它无法正常工作,但它了解了如何为每个test
数据框列,它必须被减去并除以均值和方差&#34; train& #34;数据框。
答案 0 :(得分:2)
看到你所描述的内容,我认为以下是实现目标的一种方法。您想要处理数字列。因此,您选择diamonds1
并diamonds1
。对于每个数字列,您要在.
中减去具有相同列名的列的平均值。然后,您希望将值除以is.numeric
中相同列的sd。
.
基本上是.
中TRUE的列。如果有五列符合逻辑条件,则carat
将填充每列。例如,如果.
表示.
,则所有library(dplyr)
library(ggplot2)
# I created two data sets from the diamonds data set in ggplot2
diamonds1 <- diamonds[1:10000, ]
diamonds2 <- diamonds[10001:15000, ]
mutate_if(diamonds2, is.numeric,
funs((. - mean(diamonds1$., na.rm = T)) / sd(diamonds1$.)))
carat cut color clarity depth table price x y z
<dbl> <ord> <ord> <ord> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 0.664 Fair D SI1 2.45 -1.63 1.17 0.390 0.333 0.963
2 0.707 Very Good H SI1 0.751 0.502 1.17 0.543 0.691 0.794
3 0.793 Good H SI1 -1.56 -0.777 1.17 0.896 1.05 0.528
4 1.61 Fair F SI2 1.91 -0.777 1.17 1.11 1.27 1.66
5 0.277 Ideal E SI1 -0.525 -0.351 1.17 0.436 0.520 0.334
6 0.707 Premium E VS2 -0.646 0.0755 1.17 0.681 0.645 0.479
7 0.234 Very Good E VS2 -0.889 0.928 1.17 0.374 0.473 0.189
8 0.234 Very Good E VS2 0.204 -0.777 1.17 0.206 0.286 0.286
9 0.234 Very Good E VS2 0.690 0.0755 1.17 0.221 0.270 0.407
10 0.707 Very Good G SI1 0.326 0.928 1.17 0.543 0.629 0.648
表示一轮中的克拉。然后,{{1}}表示另一列并重复完全相同的计算。
{{1}}