如何编写R中的排名集合采样?

时间:2013-01-20 00:17:52

标签: r

我正在尝试使用R对排名集合进行编程。有 2 * n ^ 2 项目,我想随机将它们分成两个大小相等的组,每组中有 n ^ 2 个项目。然后我想使用每个组中的排名集抽样来形成每个RSS块中带有 n 项的 n RSS块。

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

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)]
}
我知道这是非常错误的!有人可以帮忙吗?

1 个答案:

答案 0 :(得分: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)