除非条目已存在,否则在R中组合数据帧

时间:2016-08-17 13:53:08

标签: r dataframe merge rbind

我有一个大型数据框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

希望这或多或少变得清晰。

2 个答案:

答案 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,然后使用matchdfA获取值并将它们放在正确的位置。

答案 1 :(得分:0)

newdataframe <- rbind(A,B,by='week')
newdataframe <- newdataframe[!duplicated(newdataframe$week),]

这应该解决它