2017-03-11 2 views
0

Ich habe die folgende Tabelle DT-1. Die Säulen stellen verschiedene ZuständeKombinieren verschiedener Spaltenwerte in data.table aus einer Tabelle zu Zeilenwerten einer anderen Tabelle

id col1 col2 col3 col4 col5 col6 
qw-1 ABC XYZ QRT RWQ OIP KIJ 
qw-2 WET ERT YUP TIP IUR ETY 
qw-3 QRT ERT RWQ YUP 0  0 
qw-4 XYZ QRT RWQ 0 0  0 
qw-5 YUP 0  0  0  0  0 

Ich mag würde eine andere Tabelle DT-2, wo die Zeilen in der Tabelle Blick bilden, wie unten erwähnt:

1 ABC XYZ 
2 XYZ QRT 
3 QRT RWQ 
4 RWQ OIP 
5 OIP KIJ 
6 WET ERT 
7 ERT YUP 
8 YUP TIP 
9 TIP IUR 
10 IUR ETY 
11 QRT ERT 
12 RWQ YUP 
13 XYZ QRT 
14 QRT RWQ 
15 YUP 

Die Zeilen 1-5 von 2. Tabelle gebildet wird aus der 1. Reihe der 1. Tabelle. In ähnlicher Weise werden die Zeilen 6-10, 11-12, 13-14, & 15 der zweiten Tabelle aus der 2., 3., 4. & 5. Zeile der Tabelle 1 gebildet.

Gibt es irgendeine data.table-Methode oder irgendeine andere R Paket um es zu tun?

Antwort

1

können wir den Datensatz transponieren, das erste und das letzte Element entfernen, zu Vektor konvertieren und dann zwei Spalten in einer

library(data.table) 
m1 <- t(setDF(DT1)[-1]) 
d1 <- data.frame(col1= c(m1[-length(m1)]), col2 = c(m1[-1]), stringsAsFactors=FALSE) 

data.frame

erstellen Oder wir können melt und dann durch den Betrieb einer Gruppe tun

dN <- setDT(melt(t(DT1[-1])))[, .(col1 = value[-.N], 
       col2 = value[-1]), Var2][, Var2 := NULL][] 
Verwandte Themen