使用mutate使用自定义功能添加新列

费尔南多·菲诺托

我想做一个简单的,并使用dplyr mutate添加一个新列。基本上,我有一个包含很多列的DF,并且我想选择其中一些,仅包含hist_avg,tgt_和monthyl_X_ly的那些列。这应该很简单,并且添加以“ fct _” +指标开头的新列不成问题。但是,正如您可能在下面看到的那样,它添加了列,但名称很奇怪(fct_visits $ hist_avg_visits和fct_revenue $ hist_avg_revenue_lcy)。

另外,虽然不确定,但是我尝试使用mutate +来做到这一点,因为这样可以节省很多代码行,并且无法弄清楚该怎么做。

library(tidyverse)

(example <- tibble(brand = c("Brand A", "Brand A", "Brand A", "Brand A", "Brand A"),
                     country = c("Country A", "Country A", "Country A", "Country A", "Country A"),
                     date = c("2020-08-01", "2020-08-02", "2020-08-03", "2020-08-04", "2020-08-05"),
                     visits = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_),
                     visits_ly = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), 
                     tgt_visits = c(2491306, 2491306, 2491306, 2491306, 2491306), 
                     hist_avg_visits = c(177185, 175758, 225311, 210871, 197405), 
                     monthly_visits_ly = c(3765612, 3765612, 3765612, 3765612, 3765612),
                     revenue_lcy = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_),
                     revenue_ly = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_),
                     tgt_revenue_lcy = c(48872737, 48872737, 48872737, 48872737, 48872737),
                     hist_avg_revenue_lcy = c(231101, 222236, 276497, 259775, 251167), 
                     monthly_revenue_lcy_ly = c(17838660, 17838660, 17838660, 17838660, 17838660))) %>% 
    print(width = Inf)
#> # A tibble: 5 x 13
#>   brand   country   date       visits visits_ly tgt_visits hist_avg_visits
#>   <chr>   <chr>     <chr>       <dbl>     <dbl>      <dbl>           <dbl>
#> 1 Brand A Country A 2020-08-01     NA        NA    2491306          177185
#> 2 Brand A Country A 2020-08-02     NA        NA    2491306          175758
#> 3 Brand A Country A 2020-08-03     NA        NA    2491306          225311
#> 4 Brand A Country A 2020-08-04     NA        NA    2491306          210871
#> 5 Brand A Country A 2020-08-05     NA        NA    2491306          197405
#>   monthly_visits_ly revenue_lcy revenue_ly tgt_revenue_lcy hist_avg_revenue_lcy
#>               <dbl>       <dbl>      <dbl>           <dbl>                <dbl>
#> 1           3765612          NA         NA        48872737               231101
#> 2           3765612          NA         NA        48872737               222236
#> 3           3765612          NA         NA        48872737               276497
#> 4           3765612          NA         NA        48872737               259775
#> 5           3765612          NA         NA        48872737               251167
#>   monthly_revenue_lcy_ly
#>                    <dbl>
#> 1               17838660
#> 2               17838660
#> 3               17838660
#> 4               17838660
#> 5               17838660

first_forecast <- function(dataset, metric) {
  avg_metric <- select(dataset, paste0("hist_avg_", metric))
  tgt_metric <- select(dataset, paste0("tgt_", metric))
  monthly_metric <- select(dataset, paste0("monthly_", metric, "_ly"))
  
  output <- avg_metric * (tgt_metric / monthly_metric)
  return(output)
  
}

example %>% 
  mutate(fct_visits = first_forecast(., "visits"),
         fct_revenue = first_forecast(., "revenue_lcy")) %>% 
  print(width = Inf)
#> # A tibble: 5 x 15
#>   brand   country   date       visits visits_ly tgt_visits hist_avg_visits
#>   <chr>   <chr>     <chr>       <dbl>     <dbl>      <dbl>           <dbl>
#> 1 Brand A Country A 2020-08-01     NA        NA    2491306          177185
#> 2 Brand A Country A 2020-08-02     NA        NA    2491306          175758
#> 3 Brand A Country A 2020-08-03     NA        NA    2491306          225311
#> 4 Brand A Country A 2020-08-04     NA        NA    2491306          210871
#> 5 Brand A Country A 2020-08-05     NA        NA    2491306          197405
#>   monthly_visits_ly revenue_lcy revenue_ly tgt_revenue_lcy hist_avg_revenue_lcy
#>               <dbl>       <dbl>      <dbl>           <dbl>                <dbl>
#> 1           3765612          NA         NA        48872737               231101
#> 2           3765612          NA         NA        48872737               222236
#> 3           3765612          NA         NA        48872737               276497
#> 4           3765612          NA         NA        48872737               259775
#> 5           3765612          NA         NA        48872737               251167
#>   monthly_revenue_lcy_ly fct_visits$hist_avg_visits
#>                    <dbl>                      <dbl>
#> 1               17838660                    117225.
#> 2               17838660                    116280.
#> 3               17838660                    149064.
#> 4               17838660                    139511.
#> 5               17838660                    130602.
#>   fct_revenue$hist_avg_revenue_lcy
#>                              <dbl>
#> 1                          633149.
#> 2                          608862.
#> 3                          757521.
#> 4                          711708.
#> 5                          688124.

reprex软件包(v0.3.0)创建于2020-07-28

指向@Onyambu的伟大建议,您的代码的最后一部分应该是这样的:

example %>% 
  cbind(fct_visits = first_forecast(., "visits"),
         fct_revenue = first_forecast(., "revenue_lcy")) %>% 
  print(width = Inf)

brand   country       date visits visits_ly tgt_visits hist_avg_visits monthly_visits_ly revenue_lcy
1 Brand A Country A 2020-08-01     NA        NA    2491306          177185           3765612          NA
2 Brand A Country A 2020-08-02     NA        NA    2491306          175758           3765612          NA
3 Brand A Country A 2020-08-03     NA        NA    2491306          225311           3765612          NA
4 Brand A Country A 2020-08-04     NA        NA    2491306          210871           3765612          NA
5 Brand A Country A 2020-08-05     NA        NA    2491306          197405           3765612          NA
  revenue_ly tgt_revenue_lcy hist_avg_revenue_lcy monthly_revenue_lcy_ly hist_avg_visits hist_avg_revenue_lcy
1         NA        48872737               231101               17838660        117224.5             633149.5
2         NA        48872737               222236               17838660        116280.4             608862.0
3         NA        48872737               276497               17838660        149064.4             757521.3
4         NA        48872737               259775               17838660        139511.0             711707.9
5         NA        48872737               251167               17838660        130601.9             688124.5

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用自定义功能向数据框添加多个新列?

来自分类Dev

使用具有自定义功能的ddply + mutate吗?

来自分类Dev

使用自定义数据添加额外列的 Case 语句

来自分类Dev

argparse中的自定义“使用”功能?

来自分类Dev

Robomongo,如何使用自定义功能?

来自分类Dev

argparse中的自定义“使用”功能?

来自分类Dev

在Wordpress中使用CMB2添加具有自定义回调功能的自定义元框?

来自分类Dev

使用自定义分位数对数据分组,并将分位数标签添加到新列

来自分类Dev

使用dplyr :: mutate(across())将多列应用于自定义函数

来自分类Dev

dplyr 0.8.0 mutate_at:使用自定义函数而不覆盖原始列

来自分类Dev

在dplyr mutate中使用自定义函数?

来自分类Dev

在dplyr mutate中使用自定义函数?

来自分类Dev

在 dplyr 中使用自定义 mutate 函数

来自分类Dev

R 使用 Group by 和 Mutate 创建自定义函数

来自分类Dev

使用Netbeans添加自定义外观

来自分类Dev

使用reduce()添加自定义对象

来自分类Dev

使用自定义属性添加CSS?

来自分类Dev

使用reduce()添加自定义对象

来自分类Dev

使用Netbeans添加自定义外观

来自分类Dev

使用ForegroundColorSpan添加自定义数据

来自分类Dev

使用AsyncDisplayKit添加自定义按钮

来自分类Dev

使用.draw()添加自定义参数

来自分类Dev

添加自定义激活功能以与字符串一起使用

来自分类Dev

使用片段中的自定义功能在微调器上添加项目

来自分类Dev

使用Swift在自定义键盘中添加清除按钮功能

来自分类Dev

如何向使用自定义函数实例化的类添加自动完成功能?

来自分类Dev

在自定义功能中使用内置功能

来自分类Dev

使用Cython定义自定义熊猫聚合功能

来自分类Dev

使用Cython定义自定义熊猫聚合功能

Related 相关文章

  1. 1

    如何使用自定义功能向数据框添加多个新列?

  2. 2

    使用具有自定义功能的ddply + mutate吗?

  3. 3

    使用自定义数据添加额外列的 Case 语句

  4. 4

    argparse中的自定义“使用”功能?

  5. 5

    Robomongo,如何使用自定义功能?

  6. 6

    argparse中的自定义“使用”功能?

  7. 7

    在Wordpress中使用CMB2添加具有自定义回调功能的自定义元框?

  8. 8

    使用自定义分位数对数据分组,并将分位数标签添加到新列

  9. 9

    使用dplyr :: mutate(across())将多列应用于自定义函数

  10. 10

    dplyr 0.8.0 mutate_at:使用自定义函数而不覆盖原始列

  11. 11

    在dplyr mutate中使用自定义函数?

  12. 12

    在dplyr mutate中使用自定义函数?

  13. 13

    在 dplyr 中使用自定义 mutate 函数

  14. 14

    R 使用 Group by 和 Mutate 创建自定义函数

  15. 15

    使用Netbeans添加自定义外观

  16. 16

    使用reduce()添加自定义对象

  17. 17

    使用自定义属性添加CSS?

  18. 18

    使用reduce()添加自定义对象

  19. 19

    使用Netbeans添加自定义外观

  20. 20

    使用ForegroundColorSpan添加自定义数据

  21. 21

    使用AsyncDisplayKit添加自定义按钮

  22. 22

    使用.draw()添加自定义参数

  23. 23

    添加自定义激活功能以与字符串一起使用

  24. 24

    使用片段中的自定义功能在微调器上添加项目

  25. 25

    使用Swift在自定义键盘中添加清除按钮功能

  26. 26

    如何向使用自定义函数实例化的类添加自动完成功能?

  27. 27

    在自定义功能中使用内置功能

  28. 28

    使用Cython定义自定义熊猫聚合功能

  29. 29

    使用Cython定义自定义熊猫聚合功能

热门标签

归档