R数据帧,与更换采样而controling两个变量
问题描述:
我有R中的以下数据帧,有三个变量:R数据帧,与更换采样而controling两个变量
id<-c(1,2,3,4,5,6,7,8,9,10)
frequency<-c(1,2,3,4,5,6,7,8,9,10)
male<-c(1,0,1,0,1,0,1,0,1,0)
df<-data.frame(id,frequency,male)
对于df
意味着frequency
是5.5和观察的50%是male
。现在我想从df
中随机抽取一个样本并且大小相同,而新样本的平均值为frequency
为4,而male
的比例保持不变。 我不知道是否有任何方式在R做这样的事情。
在此先感谢。
答
我无法找到您想要的任何特定功能。但它会给你想要的结果。的“重复”,如果功能相结合,起到同样的作用,而循环,和其他行的意思做的4
repeat
{
df.sample = df[sample(nrow(df),size=4,replace=FALSE),]
if(mean(df.sample$frequency) == 4.5 & mean(df.sample$male) == 0.5){
break
}
}
结果采样大小
> df.sample
id frequency male
4 4 4 0
2 2 2 0
9 9 9 1
3 3 3 1
对于while循环,
while(!(mean(df.sample$frequency) == 4.5 & mean(df.sample$male) == 0.5)){
df.sample = df[sample(nrow(df),size=4,replace=FALSE),]
}
谢谢。只是一件事:我认为'替换'应该= TRUE和'size'= 10来完美地回答上面的问题。 – AliCivil 2015-04-06 08:57:12
如果将'size = 4,replace = FALSE'更改为'size = 10,replace = TRUE',则可以得到结果为10行,平均(频率)= 4.5,平均(男性)= 0.5。 – asbebe 2015-04-07 00:21:40
我刚刚测试了100K记录的数据集上的代码,但它不起作用。似乎循环解决方案仅适用于少量记录,并且当我们有例如100K记录时不能解决问题。有什么想法吗? – AliCivil 2015-04-19 14:35:38