簡體   English   中英

從R中的兩列中重新采樣行

[英]Re-sampling rows from two columns in R

我有2列的數據集(例如X和Y)。 我需要生成兩列的100個樣本並替換,每個樣本有10行。

X和Y值應相關。 這意味着基本上我需要重新采樣行。

到目前為止,我的工作是生成1個樣本,

set.seed(326581)
X1=rnorm(10,0,1)
Y1=rnorm(10,0,2)
data=data.frame(X1,Y1)
library("dplyr", lib.loc="~/R/win-library/3.5")
sample_n(data,10,replace = T)

因為我需要100個樣本,所以我嘗試了R中的復制功能。但是它沒有用。 所以我嘗試使用循環。

rex=c()
 rey=c()
 for(i in 1:100)
 {
 rex[i]=sample_n(data,10,replace=T)[,1]
 rey[i]=sample_n(data,10,replace=T)[,2]

 }

但是它沒有給出期望的輸出。

誰能幫我找出錯誤? 還是更容易實現任何功能(例如從1列采樣的復制功能)?

你的意思是這樣嗎?

使用基數R的sample

# Sample 100 rows from data
set.seed(2017)
idx <- sample(nrow(data), 100, replace = T)

# Store samples in a 100x2 data.frame 
df.smpl <- data[idx, ]

使用dplyr::sample_n

set.seed(2017)
df.smpl <- data %>%
    sample_n(100, replace = T)

這兩種方法都將存儲從行畫出(與替換)100個樣本data在新data.frame尺寸的

dim(data.smpl)
#[1] 100   2

或者,如果您希望樣本包含在向量list

lapply(idx, function(i) as.numeric(data[i, ]))

更新

要重復從data繪制10行100次,可以使用replicate

set.seed(2017);
lst <- replicate(
    100,
    df.smpl <- data %>% sample_n(10, replace = T),
    simplify = FALSE)

這將生成一個包含100 data.framelist

length(lst)
[1] 100

每個尺寸為10x2

sapply(lst, dim)
#[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
#[1,]   10   10   10   10   10   10   10   10   10    10    10    10    10    10
#[2,]    2    2    2    2    2    2    2    2    2     2     2     2     2     2
#[,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24] [,25] [,26]
#[1,]    10    10    10    10    10    10    10    10    10    10    10    10
#[2,]     2     2     2     2     2     2     2     2     2     2     2     2
#[,27] [,28] [,29] [,30] [,31] [,32] [,33] [,34] [,35] [,36] [,37] [,38]
#[1,]    10    10    10    10    10    10    10    10    10    10    10    10
#[2,]     2     2     2     2     2     2     2     2     2     2     2     2
#[,39] [,40] [,41] [,42] [,43] [,44] [,45] [,46] [,47] [,48] [,49] [,50]
#[1,]    10    10    10    10    10    10    10    10    10    10    10    10
#[2,]     2     2     2     2     2     2     2     2     2     2     2     2
#[,51] [,52] [,53] [,54] [,55] [,56] [,57] [,58] [,59] [,60] [,61] [,62]
#[1,]    10    10    10    10    10    10    10    10    10    10    10    10
#[2,]     2     2     2     2     2     2     2     2     2     2     2     2
#[,63] [,64] [,65] [,66] [,67] [,68] [,69] [,70] [,71] [,72] [,73] [,74]
#[1,]    10    10    10    10    10    10    10    10    10    10    10    10
#[2,]     2     2     2     2     2     2     2     2     2     2     2     2
#[,75] [,76] [,77] [,78] [,79] [,80] [,81] [,82] [,83] [,84] [,85] [,86]
#[1,]    10    10    10    10    10    10    10    10    10    10    10    10
#[2,]     2     2     2     2     2     2     2     2     2     2     2     2
#[,87] [,88] [,89] [,90] [,91] [,92] [,93] [,94] [,95] [,96] [,97] [,98]
#[1,]    10    10    10    10    10    10    10    10    10    10    10    10
#[2,]     2     2     2     2     2     2     2     2     2     2     2     2
#[,99] [,100]
#[1,]    10     10
#[2,]     2      2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM