Dla tego przykładu użyję pakietu data.table
.Jak utworzyć losowe dopasowanie między wierszami dwóch danych.tabela (lub data.frames)
Załóżmy, że masz tabelę trenerów
coaches <- data.table(CoachID=c(1,2,3), CoachName=c("Bob","Sue","John"), NumPlayers=c(2,3,0))
coaches
CoachID CoachName NumPlayers
1: 1 Bob 2
2: 2 Sue 3
3: 3 John 0
oraz tabelę graczy
players <- data.table(PlayerID=c(1,2,3,4,5,6), PlayerName=c("Abe","Bart","Chad","Dalton","Egor","Frank"))
players
PlayerID PlayerName
1: 1 Abe
2: 2 Bart
3: 3 Chad
4: 4 Dalton
5: 5 Egor
6: 6 Frank
chcesz dopasować każdy trener z kompletem graczy tak, że
- liczba graczy związanych z każdym trenerem jest określona przez pole NumPlayers
- Nie dwa autokary są przypisane do tego samego gracza
- zawodników i trenerów są dopasowywane losowo
Jak Ci to?
exampleResult <- data.table(CoachID=c(1,1,2,2,2,3), PlayerID=c(3,1,2,5,6,NA))
exampleResult
CoachID PlayerID
1: 1 3
2: 1 1
3: 2 2
4: 2 5
5: 2 6
6: 3 NA
Zamiast ID gracza 6, twój końcowy wynik ma wartość 'NA' – Frank
@Frank, yes. Jest tak, ponieważ CoachID 3 (John) ma NumPlayers == 0 i dlatego nikt nie powinien być mu przypisany. – akhmed