r中的行数乘以计数列

时间:2019-11-05 13:53:42

标签: r

我有一个已按数量求和的表:

Product  Average_Price  Quantity
ABC      25                5
DFG      14                2
HIJ       9                3

我需要将每一行重复其总(数量)值。 像这样:

Product Average_Price   Quantity
ABC       25               1
ABC       25               1
ABC       25               1
ABC       25               1 
ABC       25               1
DFG       14               1
DFG       14               1
HIJ        9               1
HIJ        9               1
HIJ        9               1

为了使这种转换更加明确,数量现在应该反映出来(每个值1)

这可以在Tidyverse中完成吗?

样品表:

df <- data.frame(product = c("ABC", "DFG", "HIJ"),
                 average_price = c(25, 14, 9),
                 quantity = c(5, 2, 3))

2 个答案:

答案 0 :(得分:2)

我们可以使用uncount重复行并添加新列Quantity

library(dplyr)
df %>%
  tidyr::uncount(Quantity) %>%
  mutate(Quantity = 1)

#   Product Average_Price Quantity
#1      ABC            25        1
#2      ABC            25        1
#3      ABC            25        1
#4      ABC            25        1
#5      ABC            25        1
#6      DFG            14        1
#7      DFG            14        1
#8      HIJ             9        1
#9      HIJ             9        1
#10     HIJ             9        1

答案 1 :(得分:1)

您可以在基准R中进行

transform(df[rep(rownames(df), df$quantity),], quantity = 1)

给出,

    product average_price quantity
1       ABC            25        1
1.1     ABC            25        1
1.2     ABC            25        1
1.3     ABC            25        1
1.4     ABC            25        1
2       DFG            14        1
2.1     DFG            14        1
3       HIJ             9        1
3.1     HIJ             9        1
3.2     HIJ             9        1