I have a data frame like this:
id y1 y2 y3 y4
--+--+--+--+--
a |12|13|14|
b |12|18| |
c |13| | |
d |13|14|15|16
我希望将其改造成两列的形式。那么上面的例子将变为:
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
每个
id
都有一对年份值的'from'和'to'。有人知道怎样简单地做到这点吗?我尝试过使用
reshape2
。我还查看了将多列合并为整洁数据,但我认为我的情况不同。
a
、b
和c
的最后一行也在那里。 - wwwto
值是由lead
生成的。重排:df %>% gather(var,from,-id)%>% arrange(id,var)%>% group_by(id)%>% mutate(to = lead(from))%>% #slice(-n())%>% filter(!is.na(from),var! ='y4')%>% select(-var)
- alistaireid=="b"
有一个18-NA
行,我不明白为什么id=="d"
不应该有一个16-NA
行。 - thelatemail18-NA
在idb
中,则16-NA
也应在idd
中。 - www