我有一个表示100X100单位平方的数据框(df),在创建了像(z= x+y, where x<-df$x, and y<-df$y)
这样的地理人口之后,我需要从中提取一个大小为n=100
的系统样本。我该怎么做 ?
答案 0 :(得分:0)
要从单位平方绘制系统(iid)样本,这里有一种方法:
SyntaxError
将此样本与z变量一起放在data.frame中:
# set random seed for reproducibility
set.seed(123)
# create a 100X2 matrix of unit square observations
myUnitSquareSample <- cbind("x"=runif(100), "y"=runif(100))
如果您已经有一个预先存在的data.frame,df,比如10,000个观察值。您可以按照@ kunal-puri的建议使用df <- data.frame("x"=myUnitSquareSample[,"x"],
"y"=myUnitSquareSample[,"y"],
"z"=rowSums(myUnitSquareSample))
函数,如下所示:
sample
最好将选定的行集保留在自己的向量中,以防您需要在脚本中进一步使用它。
要提取均匀间隔的样本,请尝试以下操作:
# set random seed for reproducibility
set.seed(11111)
# choose the set of 100 rows
mySample <- sample(1:nrow(df), size=100)
# extract sampled observations from df
mySampled.df <- df[mySample,]
这会选择边框,为避免这种情况,您可以稍微改变from和to参数。
如果您想从现有数据框架中选择100个或多或少均匀间隔的观察结果,您可以尝试以下方法:
envelySpacedMat <- expand.grid(y=seq(0, 1, length.out=10),
x=seq(0, 1, length.out=10))
df <- data.frame("x"=envelySpacedMat[,"x"],
"y"=envelySpacedMat[,"y"],
"z"=rowSums(envelySpacedMat))