1

我正在尝试使用R. 有2*n^2 个项目,我想将它们随机分成两个大小相等的组,每组有n^2 个项目。然后我想使用这些组中的每一个的排序集采样来形成n 个RSS 块,每个 RSS 块中有n 个项目。

我正在尝试的内容如下所示:

n<-4
id<-1:(2*n^2)
s1<-sample(id,n^2)
s2<-id[-s1]

block<-rep(1:(2*n),each=n)
d<-data.frame(block)

现在我想要一个名为rss的数据框中的列,它将显示在特定 RSS 块中选择了哪些 id。

我不擅长R。我正在尝试这个:

for(i in 1:n){
d$rss<-ifelse(d$block==i,sample(s1,n),0)
#s1<-s1[-which(s1==d$rss)]
}

for(i in 1:n){
d$rss<-ifelse(d$block==i,sample(s2,n),0)
#s2<-s2[-which(s2==d$rss)]
}

我知道这是非常错误的!任何人都可以帮忙吗?

4

1 回答 1

1

你应该举一个你想要的输出的例子,但给它我最好的猜测:

d <- transform(d,rss = ifelse(d[,"block"]<=n, sample(s1), sample(s2)))

或者,以更有条理的方式:

d <- transform(d,block.id = rep(1:n))
d <- transform(d,rss = ifelse(d[,"block"]<=n, sample(s1), sample(s2)))

library(reshape2)
d <- dcast(d,block ~ block.id, value = rss)
于 2013-01-20T01:34:01.077 回答