问题描述
我有一个在名称和日期中有一些重复的数据集,但是第 3 列有一个数字或空值,当删除重复时我想使条件保持在第 3 列中的非空值>
示例:
我想保留所有蓝色的,所以你可以看到我不想去掉所有的空值。如果我突出显示日期和名称列并删除重复项,则它首先保留,并且没有关于数字在重复项中显示为第一还是第二的模式。
任何帮助将不胜感激。
谢谢
解决方法
试试这个:
library(gdata)
your.data <- tibble(
Name = c("Wanita Jones","Wanita Jones","Corbin Dallas","Alex Mills","Andrea Coyle","Andrea Coyle"),Date = c("01/24/2021","01/24/2021","03/28/2021","03/29/2021","03/31/2021","03/27/2021","04/01/2021"),Request = c("null",6,7,"null",1,10,"null")
)
your.data %>% filter(
!duplicated2(interaction(Name,Date)) | Request != "null"
)
输出:
# A tibble: 7 x 3
Name Date Request
<chr> <chr> <chr>
1 Wanita Jones 01/24/2021 6
2 Corbin Dallas 03/28/2021 7
3 Corbin Dallas 03/29/2021 null
4 Corbin Dallas 03/31/2021 1
5 Alex Mills 01/24/2021 10
6 Andrea Coyle 03/27/2021 null
7 Andrea Coyle 04/01/2021 null
如果您对安装 gdata
没有兴趣,您可以先对 Request 进行排序,确保重复项的第一项始终是不为 null 的项:
your.data %>% arrange( Request == "null" ) %>%
filter(
!duplicated(interaction(Name,Date)) | Request != "null"
) %>% arrange( Date,Name )
或者只是粘贴 source
中的函数