R中是否有函数可以找到:总销售额的平均销售额贡献?

R中是否有函数可以找到:总销售额的平均销售额贡献?,r,R,假设一家公司拥有CA、TX和WI三个县的总销售额和销售额信息。 如何计算:公司总销售额的三种状态的平均销售额贡献 我还需要找到:每年、一年中的月份和一周中的某一天的平均百分比相同 编辑 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), To

假设一家公司拥有CA、TX和WI三个县的总销售额和销售额信息。 如何计算:公司总销售额的三种状态的平均销售额贡献

我还需要找到:每年、一年中的月份和一周中的某一天的平均百分比相同

编辑

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"))

如果我正确理解您的问题,可能的解决方案是:

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))

   YEAR AV_CA AV_TX AV_WI
  <dbl> <dbl> <dbl> <dbl>
1  2011 0.444 0.278 0.278

# 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))

  MONTH AV_CA AV_TX AV_WI
  <dbl> <dbl> <dbl> <dbl>
1     2 0.444 0.278 0.278

# 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))

  WEEKDAY AV_CA AV_TX AV_WI
    <dbl> <dbl> <dbl> <dbl>
1       1 0.449 0.286 0.265
2       3 0.435 0.290 0.275
3       4 0.518 0.309 0.173
4       5 0.388 0.308 0.304
5       6 0.437 0.222 0.340
6       7 0.438 0.249 0.313
库(dplyr)
图书馆(lubridate)
df1%
dplyr::突变(年份=润滑油::年份(日期),
月份=润滑油:月份(日期),
工作日=润滑脂::wday(日期),
P_CA=CA/总计,
P_TX=TX/总计,
P_WI=WI/总计)
#平均每年
df1%>%
dplyr::按年份划分的分组百分比>
dplyr::总结(AV_CA=平均值(P_CA,na.rm=真值),
AV_TX=平均值(P_TX,na.rm=真值),
AV_WI=平均值(P_WI,na.rm=真实值))
年份AV_CA AV_TX AV_WI
1  2011 0.444 0.278 0.278
#平均每月
df1%>%
dplyr::按月份分组%>%
dplyr::总结(AV_CA=平均值(P_CA,na.rm=真值),
AV_TX=平均值(P_TX,na.rm=真值),
AV_WI=平均值(P_WI,na.rm=真实值))
月AV_CA AV_TX AV_WI
1     2 0.444 0.278 0.278
#平均每个工作日
df1%>%
dplyr::分组依据(工作日)%>%
dplyr::总结(AV_CA=平均值(P_CA,na.rm=真值),
AV_TX=平均值(P_TX,na.rm=真值),
AV_WI=平均值(P_WI,na.rm=真实值))
工作日AV_CA AV_TX AV_WI
1       1 0.449 0.286 0.265
2       3 0.435 0.290 0.275
3       4 0.518 0.309 0.173
4       5 0.388 0.308 0.304
5       6 0.437 0.222 0.340
6       7 0.438 0.249 0.313

对于此虚拟数据,所有数据都将达到100%,但当使用较大的数据集时,这可能不是真的

如果我正确理解了您的问题,可能的解决方案是:

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))

   YEAR AV_CA AV_TX AV_WI
  <dbl> <dbl> <dbl> <dbl>
1  2011 0.444 0.278 0.278

# 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))

  MONTH AV_CA AV_TX AV_WI
  <dbl> <dbl> <dbl> <dbl>
1     2 0.444 0.278 0.278

# 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))

  WEEKDAY AV_CA AV_TX AV_WI
    <dbl> <dbl> <dbl> <dbl>
1       1 0.449 0.286 0.265
2       3 0.435 0.290 0.275
3       4 0.518 0.309 0.173
4       5 0.388 0.308 0.304
5       6 0.437 0.222 0.340
6       7 0.438 0.249 0.313
库(dplyr)
图书馆(lubridate)
df1%
dplyr::突变(年份=润滑油::年份(日期),
月份=润滑油:月份(日期),
工作日=润滑脂::wday(日期),
P_CA=CA/总计,
P_TX=TX/总计,
P_WI=WI/总计)
#平均每年
df1%>%
dplyr::按年份划分的分组百分比>
dplyr::总结(AV_CA=平均值(P_CA,na.rm=真值),
AV_TX=平均值(P_TX,na.rm=真值),
AV_WI=平均值(P_WI,na.rm=真实值))
年份AV_CA AV_TX AV_WI
1  2011 0.444 0.278 0.278
#平均每月
df1%>%
dplyr::按月份分组%>%
dplyr::总结(AV_CA=平均值(P_CA,na.rm=真值),
AV_TX=平均值(P_TX,na.rm=真值),
AV_WI=平均值(P_WI,na.rm=真实值))
月AV_CA AV_TX AV_WI
1     2 0.444 0.278 0.278
#平均每个工作日
df1%>%
dplyr::分组依据(工作日)%>%
dplyr::总结(AV_CA=平均值(P_CA,na.rm=真值),
AV_TX=平均值(P_TX,na.rm=真值),
AV_WI=平均值(P_WI,na.rm=真实值))
工作日AV_CA AV_TX AV_WI
1       1 0.449 0.286 0.265
2       3 0.435 0.290 0.275
3       4 0.518 0.309 0.173
4       5 0.388 0.308 0.304
5       6 0.437 0.222 0.340
6       7 0.438 0.249 0.313

对于这个虚拟数据,所有数据都将达到100%,但当使用较大的数据集时,这可能不是真的

请不要发布代码/数据/错误的图像:它无法复制或搜索(SEO),它会破坏屏幕阅读器,并且可能不适合某些移动设备。参考:(和)。请直接包括代码、控制台输出或数据(例如,
dput(head(x))
data.frame(…)
)。@r2evans我如何上载包含数据的excel工作表???dput函数可以将data.frame作为texttype
dput(head(WalData))
上传到控制台并复制/粘贴输出。当您将输出粘贴到此处时,将其高亮显示,然后按
CTRL+K
将其格式化为代码。我遵循您同事的步骤感谢@brunoplese不要发布代码/数据/错误的图像:它无法复制或搜索(SEO),它会破坏屏幕阅读器,并且可能不适合某些移动设备。参考:(和)。请直接包括代码、控制台输出或数据(例如,
dput(head(x))
data.frame(…)
)。@r2evans我如何上载包含数据的excel工作表???dput函数可以将data.frame作为texttype
dput(head(WalData))
上传到控制台并复制/粘贴输出。当您将输出粘贴到此处时,将其高亮显示,然后按
CTRL+K
将其格式化为代码。我按照您同事的步骤操作。谢谢@Brunoi将尽快尝试,可能在半小时内!!!看来这就是我想要的@DPHIt出现以下错误,我无法找出是什么问题???错误消息将随着代码的运行而继续。有什么想法吗@DPH>df1%+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)使用方法中的错误(“mutate”):没有适用于类“function”@ilaiaszarkHD的对象的“mutate_”方法;我刚刚在一个新的R脚本上再次以df的形式在您的结构上尝试了该代码,它可以正常工作。请确认您已安装最新的dplyr和lubridate软件包。还要确保您的“date”列实际上是日期格式的,并且可能在数据帧之外声明了一个“date”变量(可能使用不同的名称,或者只是清理环境并再次运行代码)。必须从代码中删除“+”符号,但我猜您只是从控制台复制了它…我犯了一个愚蠢的错误,我忘记将df定义为我的数据(dfi将尽快尝试,可能在半小时内!!!这似乎是我想要的!!!@DPHIt出现了以下错误,我无法确定是什么