Używam argumentu patterns()
w data.table::melt()
do topienia danych, które mają kolumny z kilkoma łatwo zdefiniowanymi wzorcami. Działa, ale nie widzę, jak mogę utworzyć zmienną indeksu znaków zamiast domyślnego podziału na liczby.Konwersja reprezentacji numerycznej kolumny "zmienna" na oryginalny ciąg po topieniu za pomocą wzorców
Na przykład w kolumny psów i kotów są policzone ... przyjrzeć się na „zmienny” kolumny:
A = data.table(idcol = c(1:5),
dog_1 = c(1:5), cat_1 = c(101:105),
dog_2 = c(6:10), cat_2 = c(106:110),
dog_3 = c(11:15), cat_3 = c(111:115))
head(melt(A, measure = patterns("^dog", "^cat"), value.name = c("dog", "cat")))
idcol variable dog cat
1: 1 1 1 101
2: 2 1 2 102
3: 3 1 3 103
4: 4 1 4 104
5: 5 1 5 105
6: 1 2 6 106
Jednak w B kolumny psów i kotów są ponumerowane z tekstem , ale kolumna "zmienna" jest nadal numeryczna.
B = data.table(idcol = c(1:5),
dog_one = c(1:5), cat_one = c(101:105),
dog_two = c(6:10), cat_two = c(106:110),
dog_three = c(11:15), cat_three = c(111:115))
head(melt(B, measure = patterns("^dog", "^cat"), value.name = c("dog", "cat")))
idcol variable dog cat
1: 1 1 1 101
2: 2 1 2 102
3: 3 1 3 103
4: 4 1 4 104
5: 5 1 5 105
6: 1 2 6 106
Jak mogę wypełnić kolumnę "zmienną" za pomocą jednego/dwóch/trzech zamiast 1/2/3?
tak, zmienna col. poziomy muszą być skonstruowane ręcznie jeszcze .. Kciuki w górze dla bazy :: zmiana kształtu. – Arun
Link do problemu z Githubem jest bardzo pomocny! – Nancy