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

标签 r dplyr

这个问题在这里已经有了答案:





Repeat each row of data.frame the number of times specified in a column

(9 个回答)


2年前关闭。




我想根据 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

我想要一个列表,其中包含每个销售的条目:
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

我在这里发现了一个使用 dplyr 的有趣例子:Create duplicate rows based on conditions in R

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

任何帮助将不胜感激。

最佳答案

不错的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

关于R:根据变量创建重复行(首选 dplyr),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52498169/

相关文章:

r - 如何更新 data.table 中动态选择的列

r - group_by 总计汇总值

r - 根据其他变量的值选择一列相乘

r - 如何在ggplot2中创建具有大量值的点图

r - 如何将等值面夹到球上?

r - 如何添加多条模拟绘图线到使用 ggplot 生成的绘图?

r - 制作不同范围的光栅堆栈

r - 添加一列以指示某个项目在不同时间戳中的存在

r - 在没有循环的情况下找到时间序列中最大的下降/上升(最好使用 tidy/dplyr)?

r - 跨几列,计算对的实例