我有一个大型数据框A,它只有几个星期的不同项目的销售数字,并没有提到没有销售的周数。因此,我创建了第二个数据框B,其中我已将销售额设置为0的所有周数包括在内。我现在想要将B添加到A但不是A已经提到销售的周。我希望通过添加的组合变量来做到这一点,但似乎无法找到一种快速的方法来做到这一点。
所以我有例如
A Week ID Sales Combination B Week ID Sales Combination
1 X 5 1_X 1 X 0 1_X
2 X 6 2_X 2 X 0 2_X
5 X 5 5_X 3 X 0 3_X
6 X 4 6_X 4 X 0 4_X
1 Y 2 1_Y 5 X 0 5_X
3 Y 2 3_Y 6 X 0 6_X
5 Y 2 5_Y 1 Y 0 1_Y
2 Y 0 2_Y
3 Y 0 3_Y
4 Y 0 4_Y
5 Y 0 5_Y
我想要的是这个
Week ID Sales Combination
1 X 5 1_X
2 X 6 2_X
3 X 0 3_X
4 X 0 4_X
5 X 5 5_X
6 X 4 6_X
1 Y 2 1_Y
2 Y 0 2_Y
3 Y 2 3_Y
4 Y 0 4_Y
5 Y 2 5_Y
希望这或多或少变得清晰。
答案 0 :(得分:1)
让dfA
成为第一个data.frame,dfB
成为第二个,你可以做到
# Get relevant data together
new_df = rbind(dfA, dfB[dfA$Combination != dfB$Combination,])
# Order the data frame
sorting_index = sort(new_df$Combination, index.return=T)
new_df = new_df[sorting.index$ix,]
或者,您可以将新数据框设置为dfB
,然后使用match
从dfA
获取值并将它们放在正确的位置。
答案 1 :(得分:0)
newdataframe <- rbind(A,B,by='week')
newdataframe <- newdataframe[!duplicated(newdataframe$week),]
这应该解决它