Mam ramki danych tak:przekształcanie kolumny K do 2 kolumny reprezentujące kolejne pary wartości zmiennych k
id y1 y2 y3 y4
--+--+--+--+--
a |12|13|14|
b |12|18| |
c |13| | |
d |13|14|15|16
Chcę przekształcić w taki sposób, że kończę z dwoma kolumnami. Powyższy przykład da się wtedy:
id from to
--+----+---
a |12 |13
a |13 |14
a |14 |
b |12 |18
b |18 |
c |13 |
d |13 |14
d |14 |15
d |15 |16
Każdy id
ma „od” a „do” za parę wartości rocznie.
Czy ktoś wie o łatwy sposób to zrobić? Próbowałem użyć reshape2
. Spojrzałem też na Combine Multiple Columns Into Tidy Data, ale myślę, że mój przypadek jest inny.
Neat, choć wytwarzania dodatkowych rząd – HubertL
@HubertL Dzięki za komentarz. Wiem, że ostatni rząd nie jest w pożądanych wynikach OP, ale czuję, że powinien tam być. Przynajmniej nie znajduję dobrej logiki, aby wykluczyć ostatni wiersz, ponieważ istnieje również ostatni wiersz id "a", "b" i "c". – www
Nie powinien, ponieważ jego wartość "to" jest generowana przez "lead". Przegrupowanie: 'df%>% gather (var, from, -id)%>% aranżacja (id, var)%>% group_by (id)%>% mutate (to = lead (z))%> % #slice (-n())%>% filtr (! Is.na (z), var! = 'Y4')%>% select (-var) ' – alistaire