0

我遇到了一个难题,我在堆栈溢出上找不到任何明显的答案,所以想知道我是否可以请选择专业的蜂巢思维!

我基本上有一个提供商列表,我按地区分组以获得每个地区的提供商数量,然后我还将总数除以我想要分配给它们的多个术语并四舍五入(12 个术语)。

它看起来像这样:

地区 全部的 学期
东米德兰兹 24 2
尼赫 46 4

等等。

我有一个包含 12 个术语(2021 年春季、2021 年夏季等直到 2026 年夏季)的列表,我想将这个列表的每个元素乘以(或重复)每个区域的术语值。因此,例如东米德兰兹将是 2 x 每个术语,所以看起来像:

地区 指定术语
东米德兰兹 2021 年春季
东米德兰兹 2021 年春季
东米德兰兹 2021 年夏季
东米德兰兹 2021 年夏季

等等。对于 NEYH 2021 年春季将重复 4 次,然后再进入 2021 年夏季 4 次,依此类推,一直到 2026 年夏季。理想情况下,我希望将其列在一个长列表中,这样我就可以按地区将其重新加入我的主数据集并它将按照每个区域的正确顺序排列,尽管可能有更好的方法来做到这一点!

我还没有为这个问题创建任何远程工作的代码,我正在尝试循环但没有快速实现。感谢您的任何建议!

4

1 回答 1

0

数据

df <- data.frame(region = c("East Midlands", "NEYH"), 
                 total = c(24, 46), 
                 term = c(2, 4))
> df

             region total term
    1 East Midlands    24    2
    2          NEYH    46    4

代码

terms <- do.call("c", 
                 sapply(1:length(df$term), 
                        function(x) rep(paste(c("Spring", "Summer"), c(2021:2026, 2021:2026)), 
                                        each = df$term[x]))) 
region <- do.call("c", 
                   sapply(1:length(df$term), 
                          function(x) rep(rep(df$region[x], 
                                          times = df$term[x]), times = 12)))
final_df <- cbind.data.frame(region, terms)

输出

> final_df
          region       terms
1  East Midlands Spring 2021
2  East Midlands Spring 2021
3  East Midlands Summer 2022
4  East Midlands Summer 2022
5  East Midlands Spring 2023
6  East Midlands Spring 2023
7  East Midlands Summer 2024
8  East Midlands Summer 2024
9  East Midlands Spring 2025
10 East Midlands Spring 2025
11 East Midlands Summer 2026
12 East Midlands Summer 2026
13 East Midlands Spring 2021
14 East Midlands Spring 2021
15 East Midlands Summer 2022
16 East Midlands Summer 2022
17 East Midlands Spring 2023
18 East Midlands Spring 2023
19 East Midlands Summer 2024
20 East Midlands Summer 2024
21 East Midlands Spring 2025
22 East Midlands Spring 2025
23 East Midlands Summer 2026
24 East Midlands Summer 2026
25          NEYH Spring 2021
26          NEYH Spring 2021
27          NEYH Spring 2021
28          NEYH Spring 2021
29          NEYH Summer 2022
30          NEYH Summer 2022
31          NEYH Summer 2022
32          NEYH Summer 2022
33          NEYH Spring 2023
34          NEYH Spring 2023
35          NEYH Spring 2023
36          NEYH Spring 2023
37          NEYH Summer 2024
38          NEYH Summer 2024
39          NEYH Summer 2024
40          NEYH Summer 2024
41          NEYH Spring 2025
42          NEYH Spring 2025
43          NEYH Spring 2025
44          NEYH Spring 2025
45          NEYH Summer 2026
46          NEYH Summer 2026
47          NEYH Summer 2026
48          NEYH Summer 2026
49          NEYH Spring 2021
50          NEYH Spring 2021
51          NEYH Spring 2021
52          NEYH Spring 2021
53          NEYH Summer 2022
54          NEYH Summer 2022
55          NEYH Summer 2022
56          NEYH Summer 2022
57          NEYH Spring 2023
58          NEYH Spring 2023
59          NEYH Spring 2023
60          NEYH Spring 2023
61          NEYH Summer 2024
62          NEYH Summer 2024
63          NEYH Summer 2024
64          NEYH Summer 2024
65          NEYH Spring 2025
66          NEYH Spring 2025
67          NEYH Spring 2025
68          NEYH Spring 2025
69          NEYH Summer 2026
70          NEYH Summer 2026
71          NEYH Summer 2026
72          NEYH Summer 2026

解释

我们根据给定的信息用sapply()和复制术语和区域,然后用和rep()连接得到的向量列表。do.call()c()

于 2021-04-22T07:43:00.897 回答