В одну сторону, используя grep
, найдите индексы дат, которые заканчиваются на "1231", а затем установите их на подмножество.
df[sample(grep("1231$", df$dateDS), 2), ,drop = FALSE]
# dateDS
#5 20161231
#4 20151231
Или, если вы хотите просто значения этих дат и не хотите подмножество
sample(grep("1231$", df$dateDS, value = TRUE), 2)
#[1] "20151231" "20161231"
Другой вариант - преобразовать dateDS
в фактическую дату, извлечь месяц и дату и случайным образом выбрать два значения с «1231» в нем.
df$dateDS[sample(which(format(as.Date(as.character(df$dateDS), "%Y%m%d"), "%m%d") == "1231"), 2)]