【发布时间】:2016-12-13 10:00:18
【问题描述】:
样本数据:
df <- data.frame(ProdCode = c("C1","C2"), ProdName = c("Product 1", "Product 2"), Category = c("Categ 1", "Categ 2"), "Jan-16" = c(3,2), "Apr-16" = c(3,""), "Jul-16" = c(5,2), "Oct-16" = c(5,2))
每个月对应的值和产品单元格是该产品的评级。这需要在输出数据框中的评级列中:
> df
ProdCode ProdName Category Jan.16 Apr.16 Jul.16 Oct.16
1 C1 Product 1 Categ 1 3 3 5 5
2 C2 Product 2 Categ 2 2 2 2
我有以下格式所需的以上数据:
ProdCode Product.Name Category Rating.Date Rating
C1 Product 1 Categ 1 Jan-16 3
C1 Product 1 Categ 1 Apr-16 3
C1 Product 1 Categ 1 Jul-16 5
C1 Product 1 Categ 1 Oct-16 5
C2 Product 2 Categ 2 Jan-16 2
C2 Product 2 Categ 2 Jul-16 2
C2 Product 2 Categ 2 Oct-16 2
月份列是动态的,并且会增加,例如将来根据产品将在 2017 年 1 月出现等。我可以通过使用 for 循环来做到这一点,但不值得使用 R。
【问题讨论】:
-
查看
reshape2包,特别是melt()函数 -
检查 tidyr::gather
-
@mpjdem,是的,melt() 可以工作,谢谢
标签: r data.table dplyr