从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