我在R中有以下数据框,有三个变量:
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中是否有办法做这样的事情。
提前致谢。
答案 0 :(得分:2)
我无法找到你想要的任何特定功能。但它会给你想要的结果。 'repeat'和if函数的组合起到与while循环相同的作用,而其他行表示抽样大小为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),]
}