经过对这个问题的广泛搜索,我仍然找不到解决方案。我有一个简单的数据框,有 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/