【问题标题】:subtract a value from a list to each correct column dataframe in R从列表中减去一个值到 R 中每个正确的列数据框
【发布时间】:2018-02-14 10:55:36
【问题描述】:

我有以下名为 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

我根据我的 diamonds 数据框创建了 2 个新数据框,一个将包含 70% 的数据,称为 train,另一个将包含另外 30% 的数据,test 数据框。

通过以下两个函数,我从“train”数据框中获得了列均值和方差的列表。

meanTrain <- lapply(train[,nums],mean)
varianceTrain<- lapply(train[,nums],sd)

现在我要做的是规范化我的test 数据框。

为此,我必须从 test 数据框中减去所有数字列(以选择数字列 --> test[,nums])

我的train 数据帧的平均值,然后除以train 数据帧方差。

我一直在想,这是我的代码。

escaladeTest <- apply(test[, nums], 2, function (col) (col - meanTrain[col])/varianceTrain[col])

它不能正常工作,但它是一个关于如何将每个test 数据框列的想法,它必须被减去并除以均值和方差“训练”数据框。

【问题讨论】:

    标签: r dataframe apply


    【解决方案1】:

    看到你所描述的,我认为以下是实现目标的一种方法。您想处理数字列。所以你的选择是mutate_at()is.numeric。对于每个数字列,您要减去 diamonds1 中具有相同列名的列的平均值。然后,您想将 diamonds1 中同一列的 sd 值相除。

    . 基本上是is.numeric 中具有 TRUE 的列。如果有五列满足逻辑条件,则用每一列填充.。例如,如果. 表示carat,则所有.s 表示一轮中的克拉。然后,. 表示另一列并重复完全相同的计算。

    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
    

    【讨论】:

    • @fiticida 乐于助人。
    猜你喜欢
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    相关资源
    最近更新 更多