首页 > 解决方案 > 如何在R中获取具有特殊条件的随机行

问题描述

您好,我怎样才能获得 2 个具有特殊条件的随机行。下面的示例是日期,我想获得 2 个日期的随机样本,其中任何年份但月份和日期为 12/31。所以它就像“XXXX1231”。

> dateDS
    dateDS
1 20121231
2 20131020
3 20140819
4 20151231
5 20161231
6 20171106
7 20131231

我想得到一个随机样本,它会输出 2 个日期(“XXXX1231”)

> dateSample
    dateSample
1 20121231
2 20131231

标签: r

解决方案


一种方法是使用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)]

推荐阅读