This function is like distinct but it is only relative to the row ordering (it is also an internal function)

distinct_time(df, ignore_idx = NULL)

Arguments

df

data frame, which row index related to ordering of time

ignore_idx

index of columns of data frame that shouldn't be examined relative to the "distinct" decision.

Value

df_updated an updated data frame with only rows with new information relative to time ordering

Examples

df <- data.frame(t = 1:100, x = rep(c(1,1,2,2,3,3), length = 100), y = rep(c(1,1,1,2,2,2,3,3,3), length = 100)) df_filtered <- EpiCompare:::distinct_time(df, 1) dim(df_filtered) # c(67,3)
#> [1] 67 3
df_filtered
#> t x y #> 1 1 1 1 #> 3 3 2 1 #> 4 4 2 2 #> 5 5 3 2 #> 7 7 1 3 #> 9 9 2 3 #> 10 10 2 1 #> 11 11 3 1 #> 13 13 1 2 #> 15 15 2 2 #> 16 16 2 3 #> 17 17 3 3 #> 19 19 1 1 #> 21 21 2 1 #> 22 22 2 2 #> 23 23 3 2 #> 25 25 1 3 #> 27 27 2 3 #> 28 28 2 1 #> 29 29 3 1 #> 31 31 1 2 #> 33 33 2 2 #> 34 34 2 3 #> 35 35 3 3 #> 37 37 1 1 #> 39 39 2 1 #> 40 40 2 2 #> 41 41 3 2 #> 43 43 1 3 #> 45 45 2 3 #> 46 46 2 1 #> 47 47 3 1 #> 49 49 1 2 #> 51 51 2 2 #> 52 52 2 3 #> 53 53 3 3 #> 55 55 1 1 #> 57 57 2 1 #> 58 58 2 2 #> 59 59 3 2 #> 61 61 1 3 #> 63 63 2 3 #> 64 64 2 1 #> 65 65 3 1 #> 67 67 1 2 #> 69 69 2 2 #> 70 70 2 3 #> 71 71 3 3 #> 73 73 1 1 #> 75 75 2 1 #> 76 76 2 2 #> 77 77 3 2 #> 79 79 1 3 #> 81 81 2 3 #> 82 82 2 1 #> 83 83 3 1 #> 85 85 1 2 #> 87 87 2 2 #> 88 88 2 3 #> 89 89 3 3 #> 91 91 1 1 #> 93 93 2 1 #> 94 94 2 2 #> 95 95 3 2 #> 97 97 1 3 #> 99 99 2 3 #> 100 100 2 1
# same as: df[!(1:100 %in% cumsum(rep(c(2,4), length = 33))),]
#> t x y #> 1 1 1 1 #> 3 3 2 1 #> 4 4 2 2 #> 5 5 3 2 #> 7 7 1 3 #> 9 9 2 3 #> 10 10 2 1 #> 11 11 3 1 #> 13 13 1 2 #> 15 15 2 2 #> 16 16 2 3 #> 17 17 3 3 #> 19 19 1 1 #> 21 21 2 1 #> 22 22 2 2 #> 23 23 3 2 #> 25 25 1 3 #> 27 27 2 3 #> 28 28 2 1 #> 29 29 3 1 #> 31 31 1 2 #> 33 33 2 2 #> 34 34 2 3 #> 35 35 3 3 #> 37 37 1 1 #> 39 39 2 1 #> 40 40 2 2 #> 41 41 3 2 #> 43 43 1 3 #> 45 45 2 3 #> 46 46 2 1 #> 47 47 3 1 #> 49 49 1 2 #> 51 51 2 2 #> 52 52 2 3 #> 53 53 3 3 #> 55 55 1 1 #> 57 57 2 1 #> 58 58 2 2 #> 59 59 3 2 #> 61 61 1 3 #> 63 63 2 3 #> 64 64 2 1 #> 65 65 3 1 #> 67 67 1 2 #> 69 69 2 2 #> 70 70 2 3 #> 71 71 3 3 #> 73 73 1 1 #> 75 75 2 1 #> 76 76 2 2 #> 77 77 3 2 #> 79 79 1 3 #> 81 81 2 3 #> 82 82 2 1 #> 83 83 3 1 #> 85 85 1 2 #> 87 87 2 2 #> 88 88 2 3 #> 89 89 3 3 #> 91 91 1 1 #> 93 93 2 1 #> 94 94 2 2 #> 95 95 3 2 #> 97 97 1 3 #> 99 99 2 3 #> 100 100 2 1