【问题标题】:using dplyr to split-apply-combine to scale vectors within a grouping variable使用 dplyr 拆分-应用-组合来缩放分组变量中的向量
【发布时间】:2020-09-16 01:40:03
【问题描述】:

我正在尝试重新缩放分组变量中的向量。因此,对于 mtcars,我会尝试缩放权重变量,但仅限于圆柱体的分组变量内。

第一次尝试:

mtcars2 <- mtcars %>%
group_by(cyl) %>%
  nest()%>%
  mutate(wt.scaled = purrr::map_dbl(wt, scale)) %>%
  unnest()

错误:未找到“wt”

第二次尝试:

mtcars2 <- mtcars %>%
  split(.$cyl) %>%
  purrr::map_dbl(wt, scale)

UseMethod("mutate_") 中的错误: 没有适用于“mutate_”的方法应用于“list”类的对象

我似乎不知道如何引用嵌套 data.frame 中的 wt 向量。对不起,如果这在其他地方得到了回答。我花了很多时间寻找答案,但无法使解决方案发挥作用。

【问题讨论】:

    标签: r dplyr purrr


    【解决方案1】:

    您可以在每个数据的mapscale wt 列中传递data

    library(tidyverse)
    
    mtcars %>%
      group_by(cyl) %>%
      nest() %>%
      mutate(wt.scaled = map(data, ~as.numeric(scale(.x$wt)))) %>%
      unnest(c(wt.scaled, data))
    
    #     cyl   mpg  disp    hp  drat    wt  qsec    vs    am  gear  carb wt.scaled
    #   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>     <dbl>
    # 1     6  21    160    110  3.9   2.62  16.5     0     1     4     4   -1.40  
    # 2     6  21    160    110  3.9   2.88  17.0     0     1     4     4   -0.680 
    # 3     6  21.4  258    110  3.08  3.22  19.4     1     0     3     1    0.275 
    # 4     6  18.1  225    105  2.76  3.46  20.2     1     0     3     1    0.962 
    # 5     6  19.2  168.   123  3.92  3.44  18.3     1     0     4     4    0.906 
    # 6     6  17.8  168.   123  3.92  3.44  18.9     1     0     4     4    0.906 
    # 7     6  19.7  145    175  3.62  2.77  15.5     0     1     5     6   -0.974 
    # 8     4  22.8  108     93  3.85  2.32  18.6     1     1     4     1    0.0602
    # 9     4  24.4  147.    62  3.69  3.19  20       1     0     4     2    1.59  
    #10     4  22.8  141.    95  3.92  3.15  22.9     1     0     4     2    1.52  
    # … with 22 more rows
    

    这与按组缩放wt 相同:

    mtcars %>%
      group_by(cyl) %>%
      mutate(wt.scaled = as.numeric(scale(wt)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 2019-04-26
      • 1970-01-01
      相关资源
      最近更新 更多