R语言group_by分组求最小日期返回NA的解决方法
问题原因
返回全NA的核心原因是日期解析的格式参数与实际数据格式不匹配:
- 你的
P_DATE字段存储的日期以斜杠/作为年月日分隔符,例如9/30/1984、1/31/1985 - 原代码中
as.Date()的format参数写为"%m.%d.%Y",指定的分隔符是英文点.,R无法按照这个规则识别日期,所有转换结果都为NA,最终聚合求最小值的结果自然全是NA。
修复方案
只需要把as.Date()里的格式字符串分隔符从.替换为/即可,修正后的代码如下:
avg <- rawdata %>% group_by(PROPNUM) %>% summarise(initial_date = min(as.Date(P_DATE, format = "%m/%d/%Y")))
结果说明
运行修正后的代码,会正确返回该井号(PROPNUM=49-005-27619)对应的最早日期1984-09-30,无NA值。
注:格式符
%m本身可以自动识别1-9的个位数月份,不需要额外调整为其他格式符,只要分隔符匹配即可正常解析;P_DATE的因子类型也不会影响解析逻辑,无需提前转为字符型。
内容的提问来源于stack exchange,提问作者Solicia
相关产品推荐
相关产品推荐

