原始数据
Person month Year Quantity
A 02 2018 900
A 04 2018 600
A 09 2018 300
A 04 2019 40
B 06 2018 56
B 01 2019 10
B 09 2019 20
所需的输出
Person month Year Quantity
A 01 2018 0
A 02 2018 900
A 03 2018 0
A 04 2018 600
A 05 2018 0
A 06 2018 0
A 07 2018 0
A 08 2018 0
A 09 2018 300
A 10 2018 0
A 11 2018 0
A 12 2018 0
A 01 2019 0
A 01 2019 0
A 02 2019 0
A 03 2019 0
A 04 2019 40
A 05 2019 0
A 06 2019 0
A 07 2019 0
A 08 2019 0
A 09 2019 0
A 10 2019 0
A 11 2019 0
A 12 2019 0
B 01 2018 0
B 02 2018 0
B 03 2018 0
B 04 2018 0
B 05 2018 0
B 06 2018 56
B 07 2018 0
B 08 2018 0
B 09 2018 0
B 10 2018 0
B 11 2018 0
B 12 2018 0
B 01 2019 10
B 02 2019 0
B 03 2019 0
B 04 2019 0
B 05 2019 0
B 06 2019 0
B 07 2019 0
B 08 2019 0
B 09 2019 20
B 10 2019 0
B 11 2019 0
B 12 2019 0
大家好,
我在R数据框中有上述示例数据,我想为“人员”缺少数据的每个月添加0个“数量”。我已经错过了几个月和一年,因为您可以看到我想为每个人插入到我的数据框中。例如,对于缺失的月份,将一个人的0需求的月份-年份值相加。(仅提供一些背景知识,我拥有的初始数据都有每个需求的日期,但我将其按月-年分组,因为我从如下所示的日期字段中提取了月和年值....
PersonMonthDemand <-
DateData %>%
mutate(month = month(DateOfDemand))%>%
mutate(year= year(DateOfDemand))%>%
group_by(Person, month, year) %>%
summarise(Quantity = sum(Quantity))
产生了如上所示的原始数据)
如果某些专家能为您提供帮助,将不胜感激。提前致谢。亲切的问候,Gayatri
创建一个左侧基础表。
为此,请采用所有客户的独特价值:
cstmr<-data.frame(unique(orgn_data$Person))
change column names
names(cstmr)[1]<-'Person'
使用以下命令查找数据框中日期和年份的所有组合:
orgn_data_year_mnth<-unique(orgn_data[c("month", "Year")])
cross join cstmr & organ_data_year_mnth using
cc<-merge(cstmr, organ_data_year_mnth)
最后一步是将原始数据加入cc
:
final_df<-merge(cc,orgn_data,by=c('Person','month','Year'),all.x=TRUE)
然后使用以下命令将所有NA替换为0:
final_df[is.na(final_df)] <- 0
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句