R:当下一行有重复的值时删除该行



我试图通过删除不需要的行来清理数据集。以下是我的数据集样本:第一张图片显示了数据集,第二张图片显示了我想要实现的目标。所以我试图删除所有的行,有一个类似的ID,但只留下一个在顶部。

输入图片描述

输入图片描述

您可以使用group_bycumsum计数器,然后过滤掉所有后续id:


df %>%
group_by(ID) %>%
mutate(counter = cumsum(!is.na(ID))) %>%
ungroup() %>%
filter(counter == 1) %>%
select(-counter)

我们可以按ID分组并筛选最小值,即最早的TIME。

> library(dplyr)
> df <- data.frame(LOCATION=c("A" ,"B", "C", "D", "E", "F", "G"),
+                  TIME=c("13:00", "13:20", "13:25","13:32","13:50", "13:53", "13:58"),
+                  ID=c("2V51","2Y89","2Y89","2Y89","2T33","2T33","2U99"))
> 
> df
LOCATION  TIME   ID
1        A 13:00 2V51
2        B 13:20 2Y89
3        C 13:25 2Y89
4        D 13:32 2Y89
5        E 13:50 2T33
6        F 13:53 2T33
7        G 13:58 2U99
> 
> df <- df %>%
+   group_by(ID) %>%
+   filter(TIME == min(TIME))
> 
> df
# A tibble: 4 x 3
# Groups:   ID [4]
LOCATION TIME  ID   
<chr>    <chr> <chr>
1 A        13:00 2V51 
2 B        13:20 2Y89 
3 E        13:50 2T33 
4 G        13:58 2U99 

基本函数" duplicate ";可以删除重复项。如果第一次出现,则返回FALSE,如果重复,则返回TRUE。

df <- df %>% filter(!duplicated(ID)) 

相关内容

  • 没有找到相关文章

最新更新