【发布时间】:2017-05-19 18:36:38
【问题描述】:
在对这个问题进行了大量搜索之后,我仍然找不到解决方案。我有一个包含 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
我不明白为什么 Date 没有按应有的方式分组。我尝试将 Date 更改为此处的因子、字符、日期对象,甚至 POSIXct,但我的结果始终是总数据帧的最大值和最小值。
非常感谢任何帮助。
谢谢。
【问题讨论】:
-
使用
group_by,而不是用于标准评估的group_by_。 -
这是我的错误,因为我尝试了 group_by。 group_by 和 group_by_ 都产生相同的结果:/
-
我测试了您的代码并将
group_by_替换为group_by。它奏效了。 -
我也使用下面的代码来产生下面的结果。
-
你知道我的想法---我刚刚遇到了同样的问题---可能不小心被加载了
plyr。然后它崩溃到对整个数据框进行汇总。我倾向于每次都使用dplyr::summarise,但瞬间忘记了这一点。我通常不会加载plyr但肯定是另一个包调用了它。