2017-04-04 68 views
0

我有以下tibble:数据转换(集?)

~id, ~a, ~b, ~c, ~d, 
1, 10, 20, 33, 42, 
2, 30, 20, 32, 42, 
3, 34, 24, 35, 32, 
4, 32, 24, 35, 25, 
5, 22, 14, 35, 36, 
... 
) 

但我宁愿喜欢有它在形式(只列 'a' 和 'B')

~id, ~aOrB, ~value 
1, a, 10, 
1, b, 20, 
2, a, 30, 
2, b, 20, 
3, a, 34, 
3, b, 24, 
... 

有谁知道如何得到它?我认为它可以使用“聚()”来完成的,但我没有设法得到它的工作:

newTable <- oldTable %>% gather(a, b, value='cases') 

回答

1

使用?gather阅读更多关于如何使用gather功能。

library(dplyr) 
library(tidyr) 

oldTable %>% select(-c, -d) %>% gather(key = aOrB, value = value, -id) 

编辑:如果你想保持cd,但不能堆叠:

oldTable %>% gather(key = aOrB, value = value, -id, -c, -d) 

如果你想保持cd,并与ab沿堆叠:

oldTable %>% gather(key = aOrBOrCOrd, value = value, -id) 
+0

谢谢,这很好。但是,我有没有可能将其他栏目c和d保留在新的tibble中 - 而不会改变它们? –

+0

编辑我的回复。 – Phil