簡體   English   中英

有限制地刪除r中重復的觀測值

[英]Removing duplicated observations in r with restriction

我有一個數據集,其中包含ident變量的重復項。 我只需要為每個標識選擇1個觀測值,並且它必須是最新值,即結果數據應包含對標識的觀測值,其中“年”在初始數據集中最高。

我相信一般情況如下:

1. ident   value   year
 2. A       1       19X1
 3. A       2       19X2
 4. B       4       19X2
 5. B       2       19X1
 6. B       1       19X3
 7. C       1       19X4
 8. C       2       19X1

(我無法在此處在適當的表中訂購它,因此請忽略左側的編號列表)

只有,我有數十萬個觀察員。

所得數據集的順序對我而言並不重要。

使用庫dplyr可以執行以下操作:

library(dplyr)
df %>% group_by(ident) %>% arrange(desc(year)) %>% slice(1)

輸出如下:

Source: local data frame [3 x 4]
Groups: ident [3]

    X1. ident value  year
  (dbl) (chr) (int) (chr)
1     3     A     2  19X2
2     6     B     1  19X3
3     7     C     1  19X4

假設year采用的格式是降序排列,則從最新到最舊。

注意:x1。 列是您上面輸入數據的結果。 我只是按原樣閱讀。

嘗試

df <- do.call(rbind, lapply(split(df, df$ident), 
                            function(x) x[which.max(x$year), ]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM