我正在尝试使用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)]
}
我知道这是非常错误的!有人可以帮忙吗?
答案 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)