我的脚本中有一部分以前运行得很好,但最近生成了一个奇怪的语句,之后我的许多其他函数都无法正常工作.我试图在每个站点的价值排名列表中 Select 第8位和第23位,以找到30年来每个站点一年中每天的第25和第75个百分位值.我的方法如下(适用于四行数据集——通常情况下,对于我完整的30年数据集,切片(3)将是切片(23)):

library(“dplyr”)

mydata

structure(list(station_number = structure(c(1L, 1L, 1L, 1L), .Label = "01AD002", class = "factor"), 
year = 1981:1984, month = c(1L, 1L, 1L, 1L), day = c(1L, 
1L, 1L, 1L), value = c(113, 8.329999924, 15.60000038, 149
)), .Names = c("station_number", "year", "month", "day", "value"), class = "data.frame", row.names = c(NA, -4L))    

  value <- mydata$value
  qu25 <- mydata %>% 
          group_by(month, day, station_number) %>% 
          arrange(desc(value)) %>% 
          slice(3) %>% 
          select(value)

之前,我会留下一个表,每个站点有一个值来描述第25个百分位(因为排列函数似乎从高到低排列).然而,现在当我运行这些行时,我得到一个消息:

Adding missing grouping variables: `month`, `day`, `station_number`

这条消息对我来说没有意义,因为分组变量显然存在于我的表中.同样,直到最近,这项技术仍然运作良好.我试过:

  • detatch("plyr")——因为我在dplyr之前加载了它
  • dplyr::group_by–将其直接放置在group_by行中
  • 卸载并重新安装dplyr,尽管这是为了我遇到的另一个问题

我知道为什么我会停止接收这个消息?

谢谢你的帮助.

更新:添加了一个站点的dput示例,但1月1日的值持续多年.希望在分组后返回位置值,例如,切片(3)希望为这个较小的子集返回15.6的值.

推荐答案

为了一致性,在前面定义时,分组变量应该始终存在,因此在执行select(value)时添加.ungroup应该解决这个问题:

qu25 <- mydata %>% 
  group_by(month, day, station_number) %>%
  arrange(desc(value)) %>% 
  slice(2) %>% 
  ungroup() %>%
  select(value)

请求的结果没有警告:

> mydata %>% 
+   group_by(month, day, station_number) %>%
+   arrange(desc(value)) %>% 
+   slice(2) %>% 
+   ungroup() %>%
+   select(value)
# A tibble: 1 x 1
  value
  <dbl>
1   113

R相关问答推荐

在之前合并的数据.tables中分配新列后.internal.selfref无效

Facet_wrap具有不同bin宽度值的图表

如何以编程方式将X轴勾号上的希腊符号合并到R图中?

如何将具有重复名称的收件箱合并到R中的另一列中,而结果不同?

如何按排序顺序打印一个框架中所有精确的唯一值?

如何使用按钮切换轨迹?

如何使用R对每组变量进行随机化?

使用整齐的计算(curl -curl )和杂音

根据类别合并(汇总)某些行

LOF中的插图短文字幕

计算数据帧中指定值之前的行数,仅基于每行之后的future 行,单位为r

列名具有特殊字符时的循环回归

将项粘贴到向量中,并将它们分组为x的倍数,用空格分隔

将多个变量组合成宽格式

在R中,如何将误差条放置在堆叠的每个条上?

我如何使用tidyselect来传递一个符号数组,比如Pivot_Long?

`-`是否也用于数据帧,有时使用引用调用?

向R中的数据帧添加一列,该列统计另一列中每个唯一值的二进制观测值的数量

用满足特定列匹配的另一行替换NA行

R预测包如何处理ARIMA(Auto.arima函数)中的缺失值