如何在R语言中拆分风速列,按日期生成最小、最大风速列?
解决方案
用dplyr的分组汇总可以轻松实现需求,核心思路是按日期分组后,对每组的风速值分别计算最小值和最大值:
library(dplyr) # 你的示例数据 df <- data.frame(date = rep(c("2000-01-01", "2000-01-02", "2000-01-03", "2000-01-04"), each = 2), wind = rep(c(1,2),4)) # 转换为目标结构 df2 <- df %>% group_by(date) %>% summarize( minwind = min(wind), maxwind = max(wind), .groups = "drop" # 取消分组,得到普通数据框 )
这个方法不依赖风速值的排列顺序,不管每个日期下的两个风速是先最小值还是先最大值,都能准确提取对应结果。
如果确定每个日期的两个风速值是固定顺序(比如第一行是最小值、第二行是最大值),也可以用pivot_wider实现:
df2 <- df %>% group_by(date) %>% mutate(wind_type = c("minwind", "maxwind")) %>% ungroup() %>% pivot_wider(names_from = wind_type, values_from = wind)
内容的提问来源于stack exchange,提问作者JDK
相关产品推荐
相关产品推荐

