从R中的数据框中的每个唯一日期中采样一行

从R中的数据框中的每个唯一日期中采样一行,r,R,我的数据框如下所示: col1 date 23.2 2015-01-01 23.2 2015-01-01 22.1 2015-01-01 01.2 2015-01-01 11.9 2015-01-02 12.7 2015-01-02 23.2 2015-01-02 12.4 2015-01-03 23.7 2015-01-03 34.3 2015-01-03 73.4 2015-01-04

我的数据框如下所示:

 col1        date
 23.2    2015-01-01
 23.2    2015-01-01
 22.1    2015-01-01
 01.2    2015-01-01
 11.9    2015-01-02
 12.7    2015-01-02
 23.2    2015-01-02
 12.4    2015-01-03
 23.7    2015-01-03
 34.3    2015-01-03
 73.4    2015-01-04
 83.2    2015-01-04
 91.2    2015-01-04
col1        date
22.1    2015-01-01
23.2    2015-01-02
23.7    2015-01-03
83.2    2015-01-04
我需要从这个数据框中“随机”取样,条件是取样的每一行来自一个日期,如下所示:

 col1        date
 23.2    2015-01-01
 23.2    2015-01-01
 22.1    2015-01-01
 01.2    2015-01-01
 11.9    2015-01-02
 12.7    2015-01-02
 23.2    2015-01-02
 12.4    2015-01-03
 23.7    2015-01-03
 34.3    2015-01-03
 73.4    2015-01-04
 83.2    2015-01-04
 91.2    2015-01-04
col1        date
22.1    2015-01-01
23.2    2015-01-02
23.7    2015-01-03
83.2    2015-01-04
所以我不在乎哪一行被采样,我只想确保每一行都有一个唯一的日期

试试看:

library(dplyr)
df %>% group_by(date) %>% summarise(sample(col1, 1))
尝试:

尝试:

尝试:

set.seed(1)
tbl
或

set.seed(1)
tbl
或

set.seed(1)
tbl
或

set.seed(1)

tbl工作得很好!谢谢:)工作得很好!谢谢:)工作得很好!谢谢:)工作得很好!谢谢:)或
dd[与(dd,tapply(rownames(dd),date,sample,1)),][/code>或
dd[与(dd,tapply(rownames(dd),date,sample,1)),][/code>或
dd[与(dd,tapply)(rownames(dd),date,sample,1)),][/code>
set.seed(1)
do.call('rbind', by(dd, dd$date, FUN = function(x)
  x[sample(seq.int(nrow(x)), 1), ]))
#            col1       date
# 2015-01-01 23.2 2015-01-01
# 2015-01-02 12.7 2015-01-02
# 2015-01-03 23.7 2015-01-03
# 2015-01-04 91.2 2015-01-04
set.seed(1)
tbl <- table(dd$date)
dd[unlist(Map(function(x) sample(seq.int(x), 1), tbl)) + cumsum(c(0, head(tbl, -1))), ]
#    col1       date
# 2  23.2 2015-01-01
# 6  12.7 2015-01-02
# 9  23.7 2015-01-03
# 13 91.2 2015-01-04
set.seed(1)
sp <- split(dd, dd$date)
do.call('rbind', lapply(sp, function(x) x[sample(seq.int(nrow(x)), 1), ]))
#            col1       date
# 2015-01-01 23.2 2015-01-01
# 2015-01-02 12.7 2015-01-02
# 2015-01-03 23.7 2015-01-03
# 2015-01-04 91.2 2015-01-04