【问题标题】:Generating combinations based on 2 columns in R基于 R 中的 2 列生成组合
【发布时间】:2020-09-08 08:59:25
【问题描述】:

我知道这个问题已重复多次,但我无法准确找到我在前面的主题中寻找的内容。如有重复,请随时关闭主题。

我有一个如下的数据框:

> data %>% arrange(customer_id)
           region market unit_key
1             2      98      320
2             2      98      321
3             4     184      287
4             4       4        7
5             4       4      287
6            66     521      899
7            66     521      900
8            66    3012      899
9            66     521      916
10           66    3011      900

我想创建一个第 4 列,它是一个唯一标识符调用组合 id,其形成如下:

因此,基本上对于每一对独特的区域和市场,我都应该得到一个唯一标识符,这将允许我检索它们与特定区域的市场组合相关联的 unit_key。

我尝试使用交叉连接和 tidyr::crossing() 来实现,但没有得到预期的结果。

关于这个话题的任何提示?

BR /埃德加

【问题讨论】:

  • 每个regionmarket 组合的唯一ID?试试df %>% group_by(region, market) %>% mutate(id = cur_group_id())。还有stackoverflow.com/questions/42921674/…
  • 嗨 Ronak,很遗憾这不是我想要做的。
  • 我看不出图片如何帮助理解预期的输出。至少对我来说还不清楚。如果您编辑帖子以显示共享数据的预期输出,将会很有帮助。

标签: r join dplyr combinations


【解决方案1】:

不幸的是,建议的解决方案是:

df %>% group_by(region, market) %>% mutate(id = cur_group_id())

当我得到以下结果时不起作用:

    combination_id %>% arrange(region)
    # A tibble: 373 x 4
    # Groups:   region, market [182]
              region market unit_key    id
             <dbl>   <dbl>    <dbl> <int>
     1           2      98      320     1
     2           2      98      321     1
     3           4     184      287     3
     4           4       4        7     2
     5           4       4      287     2
     6          66     521      899     4

在这种情况下,对于区域 4,我们应该有以下组合:

  • id=2,其中市场为 184
  • id=3,其中市场为 4
  • id=4,其中市场为 4 和 184

【讨论】:

  • 请删除这篇文章,因为它不是问题的答案。编辑您的帖子以包含预期的输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-12
  • 2013-08-09
  • 2021-04-09
  • 2021-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多