使用预定义条件删除数据框中的特定行

时间:2019-06-08 04:55:26

标签: r dataframe dplyr

我有一个带有列的数据框

    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), ]

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

我认为您只需要指定要在shipment_id中查找重复项即可。但是,这只会保留shipped_at列中没有任何内容的第一个版本。因此,您可能需要按shipped_atpacked_at列对列进行排序(相反,因此,空值位于底部)。这行得通吗?

df <- df[order(df[,'shipped_at'],df[,'packed_at'], decreasing=TRUE),]
df <- df[!duplicated(df$shipment_id), ]