【发布时间】:2021-07-26 14:23:31
【问题描述】:
我有一个大约 400 万行的大数据集。 列是
- Idx - 狗序列号
- 日期 - 事件日期 YYYY-MM-DD(2016 年至 2021 年)
- Is_sterilized - 如果狗已绝育,则为 1,如果未绝育,则为 0。
每只狗一年可以出现多次, 它可以出现在 2016 年和 2020 年,但不会出现在 2017-2019 年。
我想计算每年有多少只狗被绝育,这意味着,如果一只狗在一年内从 Is_serilized==0 变为 Is_sterilized ==1,我将其视为当年已绝育,它出现绝育的第一年计为他绝育的一年。
问题是我的数据库不干净,对于一些狗来说,从已消毒变为未消毒,这不可能发生,因为绝育是单程票手术。
狗可能会出现连续 3 年已绝育,然后错误地未绝育 1 年,然后绝育 2 年。
我要问的是,是否有一种逻辑可以让我估计/计算有多少只狗有方向错误。 如果是这样,我如何从我的数据集中推断出这些狗?
在示例数据中,Idx = A 和 C 有意义,但 B 和 D 没有意义
df_test <- data.frame(Idx=c( 'A', 'B', 'B', 'B','A', 'A', 'C', 'C', 'D','D','D','D','D','D','C', 'C','A' ),
YEAR_date=as.Date(c("2016-01-01","2016-01-29","2017-01-01","2016-05-01","2016-05-06","2016-05-01","2016-03-03","2016-04-22","2018-05-05", "2017-02-01"," 2021-11-12"," 2019-09-13"," 2019-11-12"," 2019-08-17", "2011-09-01"," 2011-07-05","2021-01-05")),
Is_sterilized =c(0,1,0,1,1,1,1,1,1,1,0,1,0,1,1,1,1)
)
df_test[,c( "Idx" ,"YEAR_date", "Is_sterilized")] %>% arrange(Idx ,YEAR_date )
Idx YEAR_date Is_sterilized
1 A 2016-01-01 0
2 A 2016-05-01 1
3 A 2016-05-06 1
4 A 2021-01-05 1
5 B 2016-01-29 1
6 B 2016-05-01 1
7 B 2017-01-01 0
8 C 2011-07-05 1
9 C 2011-09-01 1
10 C 2016-03-03 1
11 C 2016-04-22 1
12 D 2017-02-01 1
13 D 2018-05-05 1
14 D 2019-08-17 1
15 D 2019-09-13 1
16 D 2019-11-12 0
17 D 2021-11-12 0
我有更多的专栏,如果你还有其他相关的东西,请写下来,我会检查一下。
任何提示想法都会有所帮助
提前谢谢你
【问题讨论】:
标签: r validation dplyr noise-reduction