Pengambilan sampel acak di Excel berdasarkan kriteria spesifik dari kolum lain

0

Saya memiliki daftar nomor file di Kolom A, kode yang terkait dengan file di kolom B, dan beberapa hari di kolom I. Contoh:

File      Code     Days
12345     AAAA     100
54321     AAAA      91
67890     BBBB     115
09876     CCCC     150

Ada sekitar 100+ baris data. Saya ingin menarik sampel acak nomor file berdasarkan kriteria berikut:

  • Setidaknya 20 file atau 20% lebih tinggi.
  • Setidaknya 1 file dari masing-masing Kode.
  • Semua file yang memiliki Kode tidak dibagi dengan file lain.
  • Semua file di mana Days melebihi 150.

Apakah ini mungkin?

Kristin
sumber
(1) Kendala ketiga Anda tampaknya berlebihan; jika Anda memiliki setidaknya satu file dari kode CCCC, dan hanya ada satu file dengan kode itu, maka, menurut definisi, Anda memiliki file itu. (2) Ini mungkin sangat sulit dilakukan dengan rumus (alias fungsi lembar kerja). Apakah solusi VBA dapat diterima?
G-Man

Jawaban:

2

Kesulitannya adalah bahwa ada banyak cara pengambilan sampel yang dapat dilakukan karena rasio yang tidak diketahui dari hal-hal seperti jumlah file vs jumlah kode unik vs kode dengan satu file vs file> 150 hari vs distribusi jumlah file per kode, dll. Daripada mencoba merancang solusi pasti untuk semua kasus yang mungkin, saya akan menjelaskan proses yang akan membawa Anda ke solusi. Setiap langkah memiliki banyak cara mudah yang dapat Anda lakukan di Excel.

Anggap saja sebagai tiga pot:

  • Pot 1 Anda akan mengisi dengan sampel yang Anda pilih selama latihan (pot ini akan dalam bentuk daftar yang Anda buat dengan nama file yang dipilih). Kami akan menyebutnya daftar sampel.

  • Pot 2 berisi kumpulan kode unik (pot ini akan berbentuk daftar kode unik; cari cara mengekstrak nilai unik dari daftar yang berisi duplikat jika Anda tidak tahu caranya). Ini akan berisi kode-kode yang belum diwakili oleh sampel yang dipilih. Kami akan menyebutnya daftar kode.

  • Pot 3 berisi "token" untuk jumlah sampel yang diperlukan yang tersisa (pot ini hanya akan menjadi nomor dalam sel yang Anda kurangi atau hitung ketika Anda memilih sampel). Kami akan menyebut ini jumlah sampel yang tersisa. Hitung lebih besar dari 20 atau 20% dan masukkan angka itu ke pot ini.

Berikut langkah-langkahnya:

  1. Tentukan batas oversampling untuk digunakan. Target Anda adalah 20% dari file tetapi pengambilan sampel acak tidak akan memberi Anda seragam 20% di semua kode (kecuali Anda menambahkan persyaratan tambahan untuk itu). Beberapa kode akan memiliki kurang dari 20% yang dipilih, beberapa lagi. Aturan non-acak tidak akan memiliki hubungan hingga 20%. Kode dengan satu file akan dijadikan sampel 100%. Aturan> 150 hari dapat memilih lebih dari 20% file untuk kode yang diberikan. Jika Anda memilih jauh di atas 20% oleh aturan ini, kode itu sudah akan lebih terwakili, jadi Anda mungkin tidak ingin mengambil sampel acak lebih banyak dari kode itu. Tentukan persentase pengambilan sampel maksimum (atau jumlah sampel) untuk aturan> 150 hari di mana Anda mengecualikan kode tersebut dari pengambilan sampel acak.

  2. Pilih semua file dengan hari> 150 dan pindahkan ke daftar sampel. Pengurangan sampel yang tersisa dihitung dengan jumlah file-file ini. Hapus kode yang diwakili oleh file-file ini dari daftar kode (berdasarkan kode unik untuk kumpulan file ini).

  3. Jika langkah ini menghasilkan kode apa pun yang melebihi batas pengambilan sampel berlebih, hapus semua file yang terkait dengan kode ini dari daftar sumber. Perhatikan bahwa penghapusan bersifat kiasan. Tujuannya adalah untuk memastikan bahwa tidak ada file-file tersebut yang akan diambil sampelnya nanti. Anda bisa mengkodekannya dengan cara yang tidak mengharuskan Anda menghapus file.

  4. Dari sisa file dan kode dalam daftar kode, pindahkan ke sampel daftar file mana saja yang merupakan satu-satunya file untuk kode itu. Jumlah sampel yang tersisa dihitung berdasarkan jumlah file ini. Hapus kode yang diwakili oleh file-file ini dari daftar kode. Perhatikan bahwa langkah ini tidak sepenuhnya diperlukan tergantung pada bagaimana langkah 5 diterapkan. Saya membagi ini sebagai langkah terpisah untuk kejelasan dan sehingga Anda tidak perlu memilih secara acak dari daftar satu.

  5. Untuk setiap kode yang tersisa dalam daftar kode, pilih satu file secara acak untuk kode itu dan pindahkan ke daftar sampel. Jumlah sampel yang tersisa dihitung berdasarkan jumlah file ini. Hapus kode yang diwakili oleh file-file ini dari daftar kode (menghapus kode bisa opsional, tergantung pada bagaimana Anda menerapkannya; setelah langkah ini selesai, daftar kode tidak diperlukan lagi).

  6. Untuk jumlah file dalam jumlah sampel yang tersisa, pilih file secara acak dari file yang tersisa dan pindahkan ke daftar sampel.

Dan kamu sudah selesai.

Ini di luar ruang lingkup yang dimaksudkan dari pertanyaan di situs ini untuk merancang seluruh aplikasi untuk Anda. Ada banyak cara untuk mendekati setiap langkah dan formula serta metode untuk mencapainya terwakili dengan baik dalam pertanyaan sebelumnya di situs. Jika Anda benar-benar macet, ajukan pertanyaan baru untuk bantuan dengan masalah khusus. Misalnya, "Bagaimana cara saya memilih nilai secara acak dari daftar?" akan menjadi skala pertanyaan yang sesuai.

fixer1234
sumber
Jawaban bagus! Beberapa quibbles kecil: (1) Komentar saya pada pertanyaan tampaknya berlaku untuk jawaban Anda juga; langkah # 4 Anda berlebihan, karena Anda bisa menghapusnya, dan langkah # 5 masih akan menghasilkan hasil yang diinginkan. (2) "Hapus kode yang diwakili oleh file-file ini dari daftar kode." Pada langkah # 5 tampaknya berlebihan, karena Anda tidak pernah referensi daftar kode lagi.
G-Man
(3) Saya harus membaca jawaban Anda dua kali untuk mengetahui bahwa "hapus semua file yang terkait dengan kode-kode ini dari daftar sumber" pada langkah # 3 berarti "pastikan Anda tidak memilihnya pada langkah # 6". (4) OP mengatakan " Setidaknya 20 file atau 20% ..." Anda mungkin ingin menambahkan catatan bahwa dia dapat meningkatkan ukuran sampel untuk mendapatkan distribusi yang lebih seragam.
G-Man
pada 1. Anda benar dalam komentar pada pertanyaan, tetapi langkah ini diperlukan dalam prosedur sebagaimana dijelaskan untuk memastikan bahwa setidaknya satu dipilih. Acak tidak menjamin itu. 2. Anda benar. Itu dimaksudkan lebih untuk membantu memvisualisasikan proses. Itu bukan langkah pengkodean yang diperlukan. 4. Meningkatkan ukuran sampel tidak akan membuatnya lebih seragam; menggunakan distribusi yang seragam akan membuatnya lebih seragam. OP menciptakan aturan non-acak untuk memastikan bahwa pola pengambilan sampel minimum yang diinginkan terpenuhi.
fixer1234
Jumlah file yang terkait dengan masing-masing kode dapat sangat bervariasi, sehingga mencoba untuk mengambil sampel secara seragam menjadi sulit. Saya akan mengedit jawaban untuk memasukkan beberapa poin Anda.
fixer1234
(1) Langkah # 5 mengatakan, "Untuk setiap kode yang tersisa dalam daftar kode, pilih satu file secara acak untuk kode itu ...." Apa maksud Anda, "Acak tidak menjamin" ... "bahwa setidaknya satu dipilih." ? Langkah # 4 tidak perlu, karena, jika ada "file apa pun di mana itu adalah satu-satunya file untuk kode itu", maka langkah # 5 akan secara acak memilih satu dari daftar satu, menjamin bahwa file unik tersebut dipilih. (4) Tidak, meningkatkan ukuran sampel tidak akan membuatnya lebih seragam, tetapi itu akan memungkinkan Anda untuk membuatnya lebih seragam dengan memilih file di mana Days ≤ 150 dalam angka untuk melawan ketidakseimbangan yang disebabkan oleh Langkah # 2.
G-Man