【发布时间】:2016-04-27 00:00:59
【问题描述】:
在工作中面临采购订单、收货和发票数据的问题。当前数据(下面是 R 代码)的问题在于它根据 MD.Doc.Type 将 PO 旅程分成两行。
PO.Document.Number<-c("Doc1","Doc1","Doc2","Doc2")
PO.Document.date<-c("12.01.2016","12.01.2016","03.01.2016","03.01.2016")
PO.Vendor<-c("200001","200001","200002","200002")
PO.Vendor.Name<-c("Vendor1","Vendor1","Vendor2","Vendor2")
BuyerCode<-c("G01","G01","G02","G02")
MD.Doc.Number<-c("500087","510035","500099","510050")
MD.Doc.Type<-c("GR","INV","GR","INV")
MD.Posting.Date<-c("04.03.2016","04.03.2016","09.03.2016","15.03.2016")
MD.Amount<-c("-67.5","80","-420.39","-420.29")
df<-data.frame(PO.Document.Number,PO.Document.date,PO.Vendor,PO.Vendor.Name,BuyerCode,MD.Doc.Number,MD.Doc.Type,MD.Posting.Date,MD.Amount)
rm(list=ls(-df))
我需要将它们合并到每个 PO 的一行中,如下所示(将 4 行合并为 2 行)。原始数据的前两行和后两行包含相同的采购订单信息(采购订单编号、日期、供应商等)。在转换中,根据 df1 中“MD.Doc.Type”中的值,df“Posting.Date”变为“GR Posting Date”或“INV Posting Date”,对于“MD.Amount”和“Doc.Amount”也是如此。号”。
PO-Document Number PO-Document date PO-Vendor PO-Vendor-Name BuyerCode GR Number GR Posting Date GR-Amount Inv Number Inv Posting Date Inv Amount
Doc1 12.01.2016 200001 Vendor1 G01 500087 04.03.2016 -67.5 510035 04.03.2016 80
Doc2 03.01.2016 200002 Vendor2 G02 500099 09.03.2016 -420.39 510050 15.03.2016 -420.29
到目前为止我已经尝试过了:
df1<-cast(data=df, PO.Document.Number+PO.Document.date+PO.Vendor+PO.Vendor.Name+BuyerCode+MD.Doc.Number+MD.Posting.Date ~ MD.Doc.Type)
但我不确定如何从这里开始。感谢您的帮助。
【问题讨论】:
-
不确定您所说的“将[ing]它们重新组合成一行”是什么意思。最好是您的结果示例。
-
对不起@Adam 的困惑,我已经编辑了帖子,希望现在有意义。