我有一个已按数量求和的表:
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))
答案 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