如何从R数据框的日期变量中提取月份,lubridate函数报错如何解决
R 提取日期列月份报错问题解决方案
提示「数据框是原子类型,$函数仅可用于递归数据框」的核心原因是你当前调用的
NTData不属于数据框类对象,而是向量、矩阵等原子类型对象,无法使用$运算符提取字段。
- 第一步:先确认
NTData的当前类型,运行如下代码查看输出:
如果输出结果为class(NTData)matrix、numeric、character、logical中的任意一种,即可确认对象类型异常。 - 第二步:修正
NTData的对象类型- 如果是矩阵类型:运行代码转为数据框
NTData <- as.data.frame(NTData, stringsAsFactors = FALSE) - 如果是单类向量:说明之前的操作误将整个数据集赋值为单列,需要重新读取原始数据集,或者回溯代码找回正确的全字段数据框对象。
- 如果是矩阵类型:运行代码转为数据框
- 第三步:确认日期字段格式合规
运行如下代码检查Truckoutdate是否为日期类对象:
如果输出不是class(NTData$Truckoutdate)Date或POSIXt类,需要先转为日期格式,示例代码如下(根据你的实际日期字符串格式可替换为dmy()/mdy()等lubridate内置函数):NTData$Truckoutdate <- lubridate::ymd(NTData$Truckoutdate) - 第四步:重新运行提取月份的代码即可
NTData$Monthfull = lubridate::month(NTData$Truckoutdate, label = TRUE, abbr = FALSE)
内容的提问来源于stack exchange,提问作者Joe buggy
相关产品推荐
相关产品推荐

