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

Combine data frames in R unless entry already exists

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

希望这能让它或多或少清楚一些。

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 获取值并将它们放在正确的位置。

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

这应该可以解决