我有一個包含52個數字(有些是相同數字)的數據集,從這個數據集中我需要2000個樣本大小爲5的數據集。我如何在R控制檯中使用樣本和循環功能來做到這一點?R中的簡單樣本循環
1
A
回答
3
sample
和replicate
這裏可能是一個有用的組合。
> # generating a data set consisting of 52 numbers
> set.seed(1)
> numbers <- sample(1:30, 52, TRUE) # a vector of 52 numbers, your sample
>
> # 20 samples of size five (I chose 10 intead of 2000 for this example)
> set.seed(2)
> results <- replicate(10, sample(numbers, 5))
> results
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 2 21 27 16 25 12 8 15 26 20
[2,] 21 29 21 21 24 20 19 17 15 21
[3,] 27 20 22 6 20 30 25 24 27 30
[4,] 19 20 19 7 20 15 24 26 20 9
[5,] 24 1 24 28 22 29 9 20 24 22
每個樣本按列存儲在稱爲results
的矩陣中。以下代碼會給你你正在尋找的答案。請注意,有兩種替代方案,設置replace=TRUE
或replace=FALSE
是爲了允許採樣或更換或不更換。
results1 <- replicate(2000, sample(numbers, 5, replace=TRUE)) # sampling with replacement
results2 <- replicate(2000, sample(numbers, 5, replace=FALSE)) # sampling without replacement
3
請記住,如果你有放回抽樣(沒有指定),大小5的2000個樣品是沒有什麼不同10,000個樣本分爲若干組的5
Y <- sample(x, 10000, replace = TRUE)
你可以通過多種方式進行分割,您可以對長格式製作data.frame
或將寬格式製作爲matrix
。
# long format
dat <- data.frame(id = rep(1:5, 2000), Y)
# wide format
dat <- matrix(Y, nrow = 5)
0
不需要循環,如果可以的話,避免循環。 可以使用replicate
功能:這個返回一個矩陣,使每個「重複」將是一列(默認):
# x = your data here
n.samples = 2000
sample.size = 5
do.replace = FALSE
sample.matrix = replicate(n.samples, sample(x, sample.size, replace = do.replace))
print(sample.matrix)
相關問題
- 1. R中的簡單if-else循環
- 2. R:簡單的功能與For循環
- 3. 簡單的R而循環不工作
- 4. 一個簡單的R循環
- 5. 簡單的循環會導致內存溢出(基本R)
- 6. xslt中的簡單循環
- 7. datastage中的簡單循環
- 8. R中循環的循環
- 9. 簡單的Bash腳本循環
- 10. 簡單的遊戲循環不循環?
- 11. Perl簡單循環
- 12. 簡單WHILE循環
- 13. Matlab簡單循環
- 14. jQuery簡單循環
- 15. 簡單循環JQuery
- 16. R中矢量化簡單循環的貿易體系?
- 17. 爲什麼R中這個簡單的循環很慢?
- 18. r中這個簡單循環的任何幫助?
- 19. VB腳本簡單循環問題
- 20. 簡單的循環長度
- 21. JavaScript簡單的循環
- 22. Java簡單的for循環
- 23. 簡單的循環編程
- 24. 簡單的JavaScript循環+ jQuery
- 25. 簡單的JavaScript循環
- 26. 簡單的matlab循環
- 27. 簡單的foreach循環
- 28. 簡單的循環輸出
- 29. Javascript菜單樣式 - 循環內循環
- 30. 在R中使這個簡單循環更有效嗎?
看看'sample'和'replicate'。 –
5的樣本是否必須是唯一的,還是全部是用替換樣本? – John