R:根据变量创建重复行(首选 dplyr)

col*_*ton 7 r dplyr

我想根据 R 中的现有列表创建一个包含重复条目的新列表。我正在尝试尽可能多地使用 tidyverse,因此 dplyr 将是首选。

假设我有一个销售发生的时间列表:

df <- data.frame(time = c(0,1,2,3,4,5), sales = c(1,1,2,1,1,3))

> df
  time sales
1    0     1
2    1     1
3    2     2
4    3     1
5    4     1
6    5     3
Run Code Online (Sandbox Code Playgroud)

我想要一个列表,其中包含每个销售的条目:

ans <- data.frame(salesTime = c(0,1,2,2,3,4,5,5,5))

> ans
  salesTime
1         0
2         1
3         2
4         2
5         3
6         4
7         5
8         5
9         5
Run Code Online (Sandbox Code Playgroud)

我在这里找到了一个使用 dplyr 的有趣示例:根据 R 中的条件创建重复行

但这只会让我在 sales == n 时创建一个新行,而在 sales == n 时不允许创建 n 个新行。

任何帮助将不胜感激。

tmf*_*mnk 15

一个很好的tidyr功能是uncount()

df %>%
  uncount(sales) %>%
  rename(salesTime = time)

    salesTime
1           0
2           1
3           2
3.1         2
4           3
5           4
6           5
6.1         5
6.2         5
Run Code Online (Sandbox Code Playgroud)

  • 我真的很喜欢这个,我完全不知道 tidyr::uncount! (2认同)