使用dplyr :: mutate计算“平均销售份额”

ilaias zark HD

我的数据涉及一家公司,包括总销售额以及CA,TX和WI三个县的销售额。

资料:

> dput(head(WalData))
structure(list(CA = c(11047, 9925, 11322, 12251, 16610, 14696
), TX = c(7381, 5912, 9006, 6226, 9440, 9376), WI = c(6984, 3309, 
8883, 9533, 11882, 8664), Total = c(25412, 19146, 29211, 28010, 
37932, 32736), date = structure(c(1296518400, 1296604800, 1296691200, 
1296777600, 1296864000, 1296950400), tzone = "UTC", class = c("POSIXct", 
"POSIXt")), event_type = c("NA", "NA", "NA", "NA", "NA", "Sporting"
), snap_CA = c(1, 1, 1, 1, 1, 1), snap_TX = c(1, 0, 1, 0, 1, 
1), snap_WI = c(0, 1, 1, 0, 1, 1)), row.names = c(NA, -6L), class = c("tbl_df", 
"tbl", "data.frame"))

我尝试使用以下代码来计算三个州在公司总销售额中的平均销售份额

另外,我需要每年,每年的月份和一周中的同一天的平均百分比

install.packages("dplyr")
install.packages("lubridate")
library(dplyr)
library(lubridate)

df1 <- df %>% 
  dplyr::mutate(YEAR = lubridate::year(date),
                MONTH = lubridate::month(date),
                WEEKDAY = lubridate::wday(date),
                P_CA = CA / Total,
                P_TX = TX / Total,
                P_WI = WI / Total) 

# Average per Year
df1 %>% 
  dplyr::group_by(YEAR) %>% 
  dplyr::summarise(AV_CA = mean(P_CA, na.rm = TRUE),
                   AV_TX = mean(P_TX, na.rm = TRUE),
                   AV_WI = mean(P_WI, na.rm = TRUE))

# Average per Month
df1 %>% 
  dplyr::group_by(MONTH) %>% 
  dplyr::summarise(AV_CA = mean(P_CA, na.rm = TRUE),
                   AV_TX = mean(P_TX, na.rm = TRUE),
                   AV_WI = mean(P_WI, na.rm = TRUE))

# Average per Weekday
df1 %>% 
  dplyr::group_by(WEEKDAY) %>% 
  dplyr::summarise(AV_CA = mean(P_CA, na.rm = TRUE),
                   AV_TX = mean(P_TX, na.rm = TRUE),
                   AV_WI = mean(P_WI, na.rm = TRUE))

输出:

> df1 <- df %>% 
+   dplyr::mutate(YEAR = lubridate::year(date),
+                 MONTH = lubridate::month(date),
+                 WEEKDAY = lubridate::wday(date),
+                 P_CA = CA / Total,
+                 P_TX = TX / Total,
+                 P_WI = WI / Total) 
Error in UseMethod("mutate_") : 
  no applicable method for 'mutate_' applied to an object of class "function"
> # Average per Year
> df1 %>% 
+   dplyr::group_by(YEAR) %>% 
+   dplyr::summarise(AV_CA = mean(P_CA, na.rm = TRUE),
+                    AV_TX = mean(P_TX, na.rm = TRUE),
+                    AV_WI = mean(P_WI, na.rm = TRUE))
Error in eval(lhs, parent, parent) : object 'df1' not found

它带有错误:UseMethod(“ mutate_”)中的错误:'mutate_'的适用方法不适用于类“ function”的对象

我不知道出什么问题了,我仔细检查了代码和数据的正确性。请给出一个解决方案。

阿克伦

问题是,df不会在全局环境中将其创建为对象,并且df如果我们这样做,则会有一个带有名称的函数?df

df(x,df1,df2,ncp,log = FALSE)

基本上,错误是基于应用mutate函数df而不是对象


检查R没有创建对象的新会话

df %>% 
   dplyr::mutate(YEAR = lubridate::year(date),
                 MONTH = lubridate::month(date),
                 WEEKDAY = lubridate::wday(date),
                 P_CA = CA / Total,
                 P_TX = TX / Total,
                 P_WI = WI / Total) 

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

现在,我们将“ df”定义为

df <- WalData
df %>% 
   dplyr::mutate(YEAR = lubridate::year(date),
                 MONTH = lubridate::month(date),
                 WEEKDAY = lubridate::wday(date),
                 P_CA = CA / Total,
                 P_TX = TX / Total,
                 P_WI = WI / Total)
# A tibble: 6 x 15
#     CA    TX    WI Total date                event_type snap_CA snap_TX snap_WI  YEAR MONTH WEEKDAY  P_CA  P_TX  P_WI
#  <dbl> <dbl> <dbl> <dbl> <dttm>              <chr>        <dbl>   <dbl>   <dbl> <dbl> <dbl>   <dbl> <dbl> <dbl> <dbl>
#1 11047  7381  6984 25412 2011-02-01 00:00:00 NA               1       1       0  2011     2       3 0.435 0.290 0.275
#2  9925  5912  3309 19146 2011-02-02 00:00:00 NA               1       0       1  2011     2       4 0.518 0.309 0.173
#3 11322  9006  8883 29211 2011-02-03 00:00:00 NA               1       1       1  2011     2       5 0.388 0.308 0.304
#4 12251  6226  9533 28010 2011-02-04 00:00:00 NA               1       0       0  2011     2       6 0.437 0.222 0.340
#5 16610  9440 11882 37932 2011-02-05 00:00:00 NA               1       1       1  2011     2       7 0.438 0.249 0.313
#6 14696  9376  8664 32736 2011-02-06 00:00:00 Sporting         1       1       1  2011     2       1 0.449 0.286 0.265

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用dplyr计算行平均比率

来自分类Dev

使用dplyr按组计算平均时差

来自分类Dev

在dplyr :: mutate中使用条件

来自分类Dev

我可以使用dplyr :: mutate计算方差吗?

来自分类Dev

使用dplyr中的条件计算行平均值

来自分类Dev

使用MYSQL计算市场份额

来自分类Dev

使用MYSQL计算市场份额

来自分类Dev

无法使用 dplyr() 计算 mean()

来自分类Dev

R:在dplyr :: mutate()中使用min()

来自分类Dev

无法使用dplyr mutate添加列

来自分类Dev

使用基于 str_detect 的 dplyr 的 mutate

来自分类Dev

在 dplyr 的 mutate 中使用散列键值对

来自分类Dev

使用dplyr计算因子均值的正确方法

来自分类Dev

使用dplyr计算行中值的数量

来自分类Dev

使用dplyr计算95%-CI的长度

来自分类Dev

使用dplyr按组计算每个块?

来自分类Dev

使用 dplyr 计算组总数的相对频率

来自分类Dev

使用dplyr按年计算比例

来自分类Dev

使用dplyr的mutate()函数在sum()函数中使用列

来自分类Dev

计算组平均值,同时使用dplyr排除当前观察值

来自分类Dev

使用 dplyr 和 RcppRoll 计算所有固定窗口平均值

来自分类Dev

不使用Java计算销售佣金

来自分类Dev

不使用Java计算销售佣金

来自分类Dev

在dplyr mutate中使用“ diff”功能时出错

来自分类Dev

R:可以在mutate()(dplyr包)中使用exist()函数吗?

来自分类Dev

使用mutate_each_控制dplyr评估范围

来自分类Dev

使用dplyr mutate查找值在组中的首次出现

来自分类Dev

dplyr错误:在mutate()中使用rle()未找到对象

来自分类Dev

使用dplyr :: mutate()对列子集进行逐行cor()