gpt4 book ai didi

r - 按照以下方法计算销售额

转载 作者:行者123 更新时间:2023-12-01 11:16:50 25 4
gpt4 key购买 nike

我有一些销售额计算,并根据给定的公式定义了一些基本的预测销售额。

df1:cut_of_sales

cut-off_sales
1
2
1
3

df2:数据的实际 df:

Sales
NA
NA
NA
NA
1.2
2.1
1.4
1.1
2.1
1.4
1.1
1.2
2.1
1.4
1.1
1.2
2.1
1.4
1.1
2.3

前 4 个季度为 NA。保持原样。从第 5 行开始,为 cutoff_sales 添加第一个值

Explanation: 
1. cutoff_sales is given predefined by the company, 4 values for each quaters are given.

2. Add the q1 quarter of the cutoff sales with 2010q1 = ansq1

3. Add the q2 quater of the cutoff sales with 2010q2 = ansq2

4. Do the same for q3 and q4.

Now the answer of above addition will, will be input for next 2011 quaters.

so ansq1 + 2012q1 = ans...
ansq2 + 2012q2 = ans ....
and so on for below quarter answer for 2012 quaters will be input for 2013 and so on for rest of the 10 years.

请帮我做这个添加。

我只能做第一年的加法。

请帮我写一个函数或一个循环,它会迭代,因为接下来会有很多年。

谢谢。

最佳答案

更新问题

随着问题的更新,以下是完成任务的一种方法。由于这是季度数据并且前四行是 NA,您可以先将 mydf1 中的 cut_off 的值添加到 Sales 中。然后,您创建一个分组变量。 1 表示第一季度。您可以按照我在之前的回答中建议的那样,用 cumsum() 来总结 Sales。看来您想保留 NA。所以我最后将0转换成了NA

mydf2$Sales[5:8] <- mydf2$Sales[5:8] + mydf1$cut_off

group_by(mydf2, quarter = rep(1:4, times = n()/4)) %>%
mutate(Sales = cumsum(if_else(is.na(Sales), 0, Sales)),
Sales = na_if(Sales, 0))

Sales quarter
<dbl> <int>
1 NA 1
2 NA 2
3 NA 3
4 NA 4
5 2.20 1
6 4.10 2
7 2.40 3
8 4.10 4
9 4.30 1
10 5.50 2
11 3.50 3
12 5.30 4
13 6.40 1
14 6.90 2
15 4.60 3
16 6.50 4
17 8.50 1
18 8.30 2
19 5.70 3
20 8.80 4

数据

mydf2 <- structure(list(Sales = c(NA, NA, NA, NA, 2.2, 4.1, 2.4, 4.1, 
2.1, 1.4, 1.1, 1.2, 2.1, 1.4, 1.1, 1.2, 2.1, 1.4, 1.1, 2.3)), .Names = "Sales", row.names = c(NA,
-20L), class = "data.frame")

对于原始问题

这是一种方法。我考虑过数据中包含 NA 的情况。首先,我在 mydf1 中添加了 cut_off 的值。然后,我创建了一个名为 quarter 的新变量并定义了组。对于每个组,我都应用了 cumsum() 并对值求和。如果您没有任何 NA,最后一行将是下面代码中的 mutate(sales = cumsum(sales))

library(dplyr)

mydf2 %>%
mutate(sales = if_else(substr(sales_quarter, 1,4) == "2010", sales + mydf1$cut_off, sales)) %>%
group_by(quarter = substr(sales_quarter, 5, 6)) %>%
mutate(sales = cumsum(if_else(is.na(sales), 0, sales)))

sales_quarter sales quarter
<chr> <dbl> <chr>
1 2010Q1 2.20 Q1
2 2010Q2 4.10 Q2
3 2010Q3 2.40 Q3
4 2010Q4 4.10 Q4
5 2011Q1 4.30 Q1
6 2011Q2 5.50 Q2
7 2011Q3 3.50 Q3
8 2011Q4 5.30 Q4
9 2012Q1 6.40 Q1
10 2012Q2 6.90 Q2
11 2012Q3 4.60 Q3
12 2012Q4 6.50 Q4
13 2013Q1 8.50 Q1
14 2013Q2 8.30 Q2
15 2013Q3 5.70 Q3
16 2013Q4 8.80 Q4

数据

mydf1 <- structure(list(cut_off = c(1, 2, 1, 3)), .Names = "cut_off", row.names = c(NA, 
4L), class = "data.frame")

mydf2 <- structure(list(sales_quarter = c("2010Q1", "2010Q2", "2010Q3",
"2010Q4", "2011Q1", "2011Q2", "2011Q3", "2011Q4", "2012Q1", "2012Q2",
"2012Q3", "2012Q4", "2013Q1", "2013Q2", "2013Q3", "2013Q4"),
sales = c(1.2, 2.1, 1.4, 1.1, 2.1, 1.4, 1.1, 1.2, 2.1, 1.4,
1.1, 1.2, 2.1, 1.4, 1.1, 2.3)), .Names = c("sales_quarter",
"sales"), class = "data.frame", row.names = c(NA, -16L))

关于r - 按照以下方法计算销售额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49775062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com