2011-10-18 33 views
19

Làm cách nào để chọn mẫu hàng ngẫu nhiên với sự lặp lại từ ma trận trong R?Làm cách nào để chọn mẫu hàng ngẫu nhiên với sự lặp lại từ ma trận trong R?

Vì vậy, hãy rõ ràng, tôi sẽ bắt đầu với một ma trận, ví dụ, 100 hàng và tôi sẽ có thể chọn 5 trong số những hàng đó và tạo một ma trận mới. Tôi sẽ muốn tùy chọn làm điều này có hoặc không có thay thế.

Trả lời

33

Sử dụng sample trên các hàng có replace=TRUE hoặc replace=FALSE.

Nếu X là ma trận ban đầu của bạn sau đó

X[sample(nrow(X),size=5,replace=TRUE),] 

hoặc

X[sample(nrow(X),size=5,replace=FALSE),] 

nên làm việc. (Nó có thể dễ đọc hơn nếu bạn chọn mẫu đầu tiên: s <- sample(...) và sau đó tập hợp con: newmat <- X[s,])

8

sử dụng sample chức năng:

x <- matrix(1:1000, nrow=100) 

Với thay thế:

x[sample(1:100, 5, replace=TRUE), ] 
    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] 
[1,] 19 119 219 319 419 519 619 719 819 919 
[2,] 51 151 251 351 451 551 651 751 851 951 
[3,] 42 142 242 342 442 542 642 742 842 942 
[4,] 48 148 248 348 448 548 648 748 848 948 
[5,] 73 173 273 373 473 573 673 773 873 973 

wihtout thay thế:

x[sample(1:100, 5, replace=FALSE), ] 
    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] 
[1,] 64 164 264 364 464 564 664 764 864 964 
[2,] 67 167 267 367 467 567 667 767 867 967 
[3,] 20 120 220 320 420 520 620 720 820 920 
[4,] 17 117 217 317 417 517 617 717 817 917 
[5,] 6 106 206 306 406 506 606 706 806 906 
0

Điều này se ems hoạt động tốt hơn với khung dữ liệu:

sample_df<-x[sample.int(nrow(x),size=100,replace=TRUE),] 
Các vấn đề liên quan