R:当重复值在下一行时删除一行
R : Deleting a row when a duplicated value is in the row below
我正在尝试通过删除不需要的行来清理数据集。这是我的数据集的示例:
第一张图片显示数据集,第二张图片显示我想要实现的目标。
所以我试图删除所有具有相似 ID 的行,但只保留顶部的行。
enter image description here
enter image description here
您可以将 group_by
与 cumsum
计数器一起使用,然后过滤掉所有后续 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
基本函数“duplicated”可以删除重复项。第一次出现时给出 FALSE,重复出现时给出 TRUE。
df <- df %>% filter(!duplicated(ID))
我正在尝试通过删除不需要的行来清理数据集。这是我的数据集的示例: 第一张图片显示数据集,第二张图片显示我想要实现的目标。 所以我试图删除所有具有相似 ID 的行,但只保留顶部的行。
enter image description here
enter image description here
您可以将 group_by
与 cumsum
计数器一起使用,然后过滤掉所有后续 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
基本函数“duplicated”可以删除重复项。第一次出现时给出 FALSE,重复出现时给出 TRUE。
df <- df %>% filter(!duplicated(ID))