与tidyr聚集:位置必须介于0和n之间

时间:2015-09-10 22:16:08

标签: r tidyr

我有一些如下数据:

x.row10 <- setNames(data.frame(letters[1:3],1:3,2:4,3:5,4:6,5:7,6:8,7:9),
                    c("names",2004:2009,2012))
#  names 2004 2005 2006 2007 2008 2009 2012
#1     a    1    2    3    4    5    6    7
#2     b    2    3    4    5    6    7    8
#3     c    3    4    5    6    7    8    9

现在,我可以通过gather()包中的tidyr将其缩短:

x.row10  %>% gather(Year, Val, -names)

但是当我使用

x.row10  %>% gather(Year, Val, c(2004:2009,2012))

这是我的直觉选择,我收到错误消息

  

错误:位置必须介于0和n之间

怎么解决这个问题?

2 个答案:

答案 0 :(得分:5)

问题被标记为已解决,但我认为发布我的答案可能很有用。大卫·阿伦堡的做法是对的。你需要exakt 后盾才能运作。如果您在评论中使用引号作为uncool,则会收到与他相同的错误:

Error: All select() inputs must resolve to integer column positions.
The following do not:
*  c("2004":"2009", "2012")

对于德国keybord用户:如果你不知道(几分钟前像我一样:-))如何键入背板:

"Shift + the key on the right side of ß" and after that "spacebar".

答案 1 :(得分:3)

x.row10  %>% gather(Year, Val, c(2:8))