我的脚本中有一部分以前运行得很好,但最近产生了一个奇怪的语句,之后我的许多其他函数都不能正常工作。我试图在每个站点的值的排名列表中选择第8和第23位,以找到每个站点30年来一年中每天的第25和第75百分位值。我的方法如下(适用于四行数据集-切片(3)通常是我完整的30年数据集的切片(23)):
library(“dplyr”)
mydata <- data.frame(
station_number = factor(rep("01AD002", 4L)),
year = 1981:1984,
month = rep(1L, 4L),
day = rep(1L, 4L),
value = c(113, 8.329999924, 15.60000038, 149)
)
以前,我会留下一个表,每个站点有一个值来描述第25个百分点(因为arrange函数似乎将它们从高到低排序)。然而,现在当我运行这些行时,我得到一条消息:
Adding missing grouping variables: `month`, `day`, `station_number`
这个消息对我来说没有意义,因为分组变量在我的表中很清楚。同样,直到最近,这一直运作良好。我试过:
- detatch(“plyr”)-因为我在dplyr之前加载了它
- dplyr::group_by -将其直接放置在group_by行中
- 卸载并重新安装dplyr,尽管这是我遇到的另一个问题
你知道为什么我会收到这条消息吗?为什么它会停止工作?
谢谢你的帮助
更新:添加了一个站点的dput示例,但多年的1月1日值。希望一旦分组就返回位置值,例如slice(3)希望为这个较小的子集返回15.6的值。
4条答案
按热度按时间dl5txlt91#
为了保持一致性,分组变量在之前定义时应该始终存在,因此在执行
select(value)
时添加。ungroup
应该解决它:请求的结果没有警告:
aurhwmvo2#
您还可以使用data.frame()在select语句之前将tibble转换为 Dataframe 。然后dplyr就失去了对分组变量的跟踪,不再担心它们了。
p3rjfoxz3#
你最近是不是偶然更新了dplyr?我想知道你的dplyr::arrange调用是否受到了https://blog.rstudio.org/2016/06/27/dplyr-0-5-0/的不利影响
Breaking changesarrange()再次忽略分组,恢复到dplyr 0.3及更早版本的行为。这使得arrange()与其他dplyr动词不一致,但我认为这种行为通常更有用。无论如何,它不会再改变了,因为更多的变化只会导致更多的混乱。
mrwjdhj34#
您可以在开始时将该tribble转换为dataframe