[英]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.