我试图找出包gather
中的参数tidyr
。
我查看了文档,语法如下:
gather(data, key, value, ..., na.rm = FALSE, convert = FALSE)
帮助文件中 有一个示例:
stocks <- data.frame(
time = as.Date('2009-01-01') + 0:9,
X = rnorm(10, 0, 1),
Y = rnorm(10, 0, 2),
Z = rnorm(10, 0, 4)
)
gather(stocks, stock, price, -time)
我很好奇最后一行:
gather(stocks, stock, price, -time)
这里,stocks
明明就是我们要修改的数据,没问题。
所以我可以读到它stock
并且price
是键值对的参数——但是这个函数如何决定如何选择列来创建这个键值对呢?原始数据框如下所示:
time X Y Z
2009-01-01 1.10177950 -1.1926213 -7.4149618
2009-01-02 0.75578151 -4.3705737 -0.3117843
2009-01-03 -0.23823356 -1.3497319 3.8742654
2009-01-04 0.98744470 -4.2381224 0.7397038
2009-01-05 0.74139013 -2.5303960 -5.5197743
我没有看到任何迹象表明我们应该使用X
,Y
或的任何组合Z
。当我使用这个函数时,我觉得我只是在为我想要的长格式数据框中的列选择名称,并祈祷它gather
神奇地起作用。想想看,我用的时候也有这种感觉melt
。
是否gather
查看列的类型?它是如何从宽映射到长的?
编辑
下面的很好的答案,下面的很好的讨论,对于想要更多关于tidyr
包的哲学和使用信息的人来说,一定要阅读这篇论文,尽管小插图没有解释语法。