如何检查 distinct 参数是否仅删除了我想要的案例?
我有这个玩具数据框:
library(tidyverse)
ID = as.integer(c(1, 2, 2, 3, 3))
Program = c("P1", "P2", "P2", "P1", "P2")
From = as.Date(c("2016-10-01", "2016-07-01", "2016-01-25", "2016-05-01", "2016-04-06"))
To = as.Date(c("2017-03-31", "2016-11-27", "2016-06-30", "2016-06-02", "2016-04-23"))
df = tibble(ID, Program, From, To)
df
我想只保留参与同一程序的最后一个实例。它应该是这样的:
df2 = distinct(df, ID, Program, .keep_all = TRUE)
df2
这样做很好,但我的原始数据框有10万个案例,我想找到一种方法来验证我没有删除我应该保留的人。
我尝试了唯一和重复的参数,但只能在单个变量上使用它们;不要将整个数据框子集化在它们上。我可以随机挑选一些这样的案例:
df2[df2$ID == 2,]
但必须采用更系统的方法。
非常感谢!
答案 0 :(得分:0)
只有当您的数据框按特定顺序排列时(特别是每个To
和ID
组中Program
的递减顺序),您的答案才有效。)
因为无论如何你都处于tidyverse,这是另一种方法,它避免了必须以任何特定的顺序拥有数据框。
df %>% group_by(ID, Program) %>% filter(To == max(To))
要了解我对订单问题的意义,请尝试在df[sample(nrow(df)),]
上运行此代码和代码,并注意此代码始终输出相同的行(尽管顺序不同),而代码则不然。原则上,您可以对数据框进行预先排序,但这对于您尝试解决的问题来说是过度的,这只是为了找到每个ID
和Program
组合的最大日期。 / p>
就验证而言,除非这些常用函数中存在任何错误,否则我不确定您关注的是什么。