我有一个带有列的数据框
shipment_id created_at picked_at packed_at shipped_at
CSDJKH231BN 2019-02-03 2019-02-03
CSDJKH231BN 2019-02-03 2019-02-03 2019-02-04 2019-02-05
CSDJKH2KFJ3 2019-02-01 2019-02-04 2019-02-07
数据库正在通过Google驱动器上传到rServer,该驱动器正在不断更新。
u1 <- "https://docs.google.com/spreadsheets/d/e/"link""
tc1 <- getURL(u1, ssl.verifypeer=FALSE)
x <- read.csv(textConnection(tc1))
如果在第一次更新中,shipment_id CSDJKH231BN最高达到picked_at,而在第二次更新中,从Google驱动器中,我们将CSDJKH231BN上升至Shipped_at。我该如何只保留最高于shipped_at的shipment_id,但我也想保留诸如CSDJKH2KFJ3之类的shipping_id,这些尚待处理且尚未发货。
基本上只是删除重复的条目,但是此代码对我不起作用。
df <- df[!duplicated(df), ]
任何帮助将不胜感激。
答案 0 :(得分:2)
我认为您只需要指定要在shipment_id
中查找重复项即可。但是,这只会保留shipped_at
列中没有任何内容的第一个版本。因此,您可能需要按shipped_at
和packed_at
列对列进行排序(相反,因此,空值位于底部)。这行得通吗?
df <- df[order(df[,'shipped_at'],df[,'packed_at'], decreasing=TRUE),]
df <- df[!duplicated(df$shipment_id), ]