r - dplyr 中的 group_by 日期列

标签 r dplyr

经过对这个问题的广泛搜索,我仍然找不到解决方案。我有一个简单的数据框,有 43 行 2 列。我的第一列包含两个日期。第一个日期打印 19 次,其他日期打印 24 次。第二列是温度。我想按日期查找最高和最低温度,但我的代码不断打印整个数据集的最高和最低温度。

数据:

Date <- c(rep(x = "2017-05-18", each= 19), rep(x = "2017-05-19", each= 24))


Temperature_F <- c(35, 35, 42, 49, 57, 63, 64, 67, 70, 71, 72, 71, 72, 70, 66, 61, 57, 54, 50, 49, 45, 44, 44, 42, 40, 39, 47, 53, 61, 67, 69, 
    72, 75, 76, 77, 76, 77, 75, 71, 66, 62, 58, 54)

NWS_temps1 <- data.frame(Date, Temperature_F)

这是我的 dplyr 代码,当我认为它应该按日期提供最大和最小温度时,它不断为我提供整个温度列的最大和最小温度。

NWS_temps1 <- tbl_df(NWS_temps1)

 NWS_temps1 %>%
  group_by(Date) %>% 
  summarise(Tmax = max(Temperature_F), Tmin= min(Temperature_F))

我得到的输出是:

 Tmax Tmin
  77   35

当我希望:

Date        Tmax Tmin
2017-05-18   72   35
2017-05-19   77   39

我不明白为什么日期没有按应有的方式分组。我尝试将日期更改为这里的一个因素、字符、日期对象,甚至 POSIXct,但我的结果始终是总数据帧的最大值和最小值。

非常感谢任何帮助。

谢谢。

最佳答案

看来您正在使用标准评估版本 group_by_() 而不是 NSE 版本 group_by()。尝试不带下划线:

NWS_temps1 %>%
    group_by(Date) %>% 
    summarise(Tmax = max(Temperature_F), Tmin= min(Temperature_F))

#> # A tibble: 2 x 3
#>         Date  Tmax  Tmin
#>        <chr> <dbl> <dbl>
#> 1 2017-05-18    72    35
#> 2 2017-05-19    77    39

关于r - dplyr 中的 group_by 日期列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44076863/

相关文章:

r - 解析包含html的HTML(不间断空格)

r - 使用类似选择的机制为 dplyr 中的不同调用选择变量

r - 设置条件 group_by

R:显示列中具有重复元素的所有行

r - 编码 R 中向量中元素的变化

R 列平均因子

mysql - RODBC 更改 group_concat 的限制

r - llply 在 Parallel - R 中失败

随机抽样组

r - 按组添加行并在 R 中用 dplyr 填充它们