2017-11-03 1 views
0

Hallo also ich versuche, Validierung meines Basket für Assoziationsregeln zu tun, und ich möchte Kombinationen meines Datenrahmens in der gleichen Spalte erstellen.Kombinationen in R

So zum Beispiel von diesem DF von Benutzer-ID und Korb,

> head(validDF) 
    UserID     Basket 
1 935   Toy Story (1995) 
2 935 Dead Man Walking (1995) 
3 935 Mr. Holland's Opus (1995) 
4 936    Fargo (1996) 
5 936   Rock The (1996) 
6 936   Twister (1996) 

Ich mag diese Kombinationen erstellen:

UserID     Basket 
1 935   Toy Story (1995), Dead Man Walking (1995) 
2 935 Dead Man Walking (1995), Toy Story (1995) 
3 935 Mr. Holland's Opus (1995), Toy Story (1995) 
4 935 Mr. Holland's Opus (1995), Dead Man Walking (1995) 
5 936    Fargo (1996), Rock The (1996) 
6 936   Rock The (1996), Fargo (1996) 
7 936   Twister (1996), Fargo (1996) 
8 936   Twister (1996), Rock The (1996) 

Wer noch keine Ahnung hat, wie es zu tun?

Um R zu verwenden, um diese Kombination basierend auf UserId im Dataset zu generieren, ist R nicht meine stärkste Sprache. So wird jede Hilfe geschätzt!

+0

diejenigen, die nicht Permutationen sind, sind sie Kombinationen (es sei denn, Dead Man Walking/Toy Story ist anders als Toy Story/Dead Man Walking). Siehe '? Combn' oder suchen Sie nach SO – MichaelChirico

+0

Ist es notwendig, die Kombinationen zur Warenkorbvariable hinzuzufügen? Die aufgelisteten Kombinationen sind nur zufällig oder gibt es eine bestimmte Regel dahinter? Für mich sieht es aus wie zufällige Stichproben mit Ersatz aus dem Benutzer-ID-Pool. 'group_by()' und 'sample_n()' oder 'sample_frac()' könnten helfen. – FAMG

Antwort

0
# data frame 
    validDF = data.frame(
    UserID = c(935, 935, 935, 936, 936, 936),     
    Basket = c("Toy Story (1995)", "Dead Man Walking (1995)", "Mr. Holland's Opus (1995)", 
       "Fargo (1996)", "Rock The (1996)", "Twister (1996)")) 

    res = lapply(unique(validDF$UserID), function(x){ 
     ls_Basket <- as.character(validDF$Basket[validDF$UserID == x]) 
     res_int = permutations(n = 3, r=2, v= ls_Basket) 
     data.frame(UserID = x, Basket = apply(res_int, 1, paste, collapse = ", ")) 
    }) 
    res <- do.call(rbind, res) 

Aber in Ihrem Beispiel, Sie Permutation mischen (3 Filme => 6 Permutationen) und Kombination (3 Filme => 3 Kombinationen)

Verwandte Themen