2016-04-24 52 views
0

我有一個代表100X100單位平方的數據框(df),在創建像這樣的地理人口(z= x+y, where x<-df$x, and y<-df$y)後,我需要從中提取一個尺寸爲n=100的系統樣本。我該怎麼做 ?如何從地理人口中繪製系統樣本?

+0

你可以用'sample'功能。 –

回答

0

爲了從單位正方形繪製系統(IID)樣本,這裏是一個方法:

# set random seed for reproducibility 
set.seed(123) 
# create a 100X2 matrix of unit square observations 
myUnitSquareSample <- cbind("x"=runif(100), "y"=runif(100)) 

當您變量z把這個樣品中data.frame在一起:

df <- data.frame("x"=myUnitSquareSample[,"x"], 
       "y"=myUnitSquareSample[,"y"], 
       "z"=rowSums(myUnitSquareSample)) 

如果您已有一個預先存在的data.frame,df,例如10,000個觀察值。您可以採用sample功能,通過@ KUNAL - 普瑞的建議如下:

# 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,] 

這是一個好主意,讓所選擇的行集在自己的向量的情況下,您需要進一步在使用它你的腳本。

要提取的間隔均勻的樣品,請嘗試以下操作:

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)) 

這將選擇的邊界,避免這種情況,你可以從和參數略有改變。

如果您想選擇從現有data.frame是或多或少均勻分佈的100個觀測,你可以嘗試以下操作:

# select 100 obs roughly evenly dispersed: 
obsSystematic <- as.integer(seq(from=1, to=nrow(df), length.out = 100)) 

mySystematicdf <-df[obsSystematic,] 
+0

這是一個隨機樣本... – 27titanik

+0

對不起,也許這是我的愚蠢,但我只能看到一個隨機樣本。我需要一個有系統的方法,可以每隔100年選一個觀察對象,但要有條不紊。 如果我不得不在廣場上畫一個系統的抽樣,我只畫出100個點,每個點距離彼此相同。 – 27titanik

+0

是的!最後一個應該是正確的,但它不起作用。你可以重新檢查它嗎? – 27titanik

相關問題