首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >样本复制

样本复制
EN

Stack Overflow用户
提问于 2014-05-23 15:54:57
回答 1查看 129关注 0票数 0

我有一个数据框架(d),由55个变量的640个观测组成。

我想随机抽样这个数据框架在10个子数据框架的64个观察,为55个变量。我不希望任何观察都在多个子数据帧中。

此代码适用于一个示例。

代码语言:javascript
复制
d1 <- d[sample(nrow(d),64,replace=F),]

我怎么能重复这种治疗十次?

这个给了我一个10个变量的数据(每个变量是一个样本.)

代码语言:javascript
复制
d1 <- replicate(10,sample(nrow(d),64,replace = F))}

有谁可以帮我?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-23 15:59:00

下面是一个在data.frames列表中返回结果的解决方案:

代码语言:javascript
复制
d <- data.frame(A=1:640, B=sample(LETTERS, 640, replace=TRUE)) # an exemplary data.frame
idx <- sample(rep(1:10, length.out=nrow(d)))
res <- split(d, idx)
res[[1]] # first data frame
res[[10]] # last data frame

唯一棘手的部分是创建idxidx[i]标识{1,...,10}中的结果data.frame,idx[i],其中将出现di第四行。这种方法向我们保证,任何行都不会放置在超过1 data.frame中。

另外,请注意,sample返回(1,2,...,10,1,2,...,10)的随机排列。

另一种方法是使用:

代码语言:javascript
复制
apply(matrix(sample(nrow(d)), ncol=10), 2, function(idx) d[idx,])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23833648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档