eine Zeichenmatrix mit diesen Kombinationen zurückzukehren Basis R verwenden, versuchen
do.call(rbind, t(sapply(split(df, df$Id), function(i) t(combn(i$Value, 2)))))
[,1] [,2]
[1,] "a" "c"
[2,] "a" "h"
[3,] "c" "h"
[4,] "f" "a"
Jede Zeile ist eine gewünschte Kombination.
Um dies ein wenig zu brechen, teilt split
die Daten.frame per ID in eine Liste von zwei data.frames. Dann wird diese Liste und die combn
Funktion gefüttert, um die paarweisen Kombinationen innerhalb dieser data.frames zu finden. Das Ergebnis von jedem data.frame (welches eine Matrix ist) wird transponiert, um mit t
Ihre gewünschte Struktur zu passen. Schließlich wird diese Liste von Matrizen an do.call
übergeben, die rbind
verwendet, um die endgültige Matrix zurückzugeben.
Hinweis: Es wird davon ausgegangen, dass die Wertspalte ein Zeichen ist (nicht der variable Typ des lästigen Faktors). Dies wird leicht in der read.
Familie von Funktionen, wie read.csv
und erreicht, indem Sie das Argument as.is = TRUE zu Ihrer Lesefunktion hinzufügen (oder die längeren StringsAsFactors = FALSE). Wenn die Variable bereits ein Faktor ist, können Sie die Anweisung i$Value
gegen Ende in as.character
: as.character(i$Value)
umbrechen, und sie wird wie gewünscht ausgeführt.
sind die Daten manuell eingegeben oder aus einer Datei lesen? – depperm
@depperm Ich möchte die Daten aus einer Datei wie csv eingeben –