我搜索了几个小时,但我仍然很困难.
我有一个包含DATE列的数据框,我将其引用为NM_DATA $ DATE
它是yyyymmdd形式的数字...我知道...这一百个线程...我尝试了我能找到的每一个解决方案,他们不会为我工作.即将重新加载rStudio(哦是的..我使用rStudio)
NM_DATA$DATES <- as.Date(NM_DATA$DATES, "%Y%m%d")
Run Code Online (Sandbox Code Playgroud)
回报
Error in as.Date.default(NM_DATA$DATES, "%Y%m%d") :
do not know how to convert 'NM_DATA$DATES' to class "Date"
Run Code Online (Sandbox Code Playgroud)
有人可以解释如何获得DATE专栏
DATE
19870401
19870501
etc
Run Code Online (Sandbox Code Playgroud)
成
DATE
1987-04
1987-05
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏!
杰西
为了在这里得到一个完整的答案,我在某种程度上充实了@ Alex的答案.
该as.Date函数可用于将字符串(或其矢量)转换为Date格式.strptime(?strptime)的帮助页面提供了有关Date对象可以使用的可能格式的一些有价值的信息.
在您的情况下,您希望将NM_DATA$DATE向量转换为日期.格式yyyymmdd由表示%Y%m%d,因此如果您的向量是字符,我们可以像这样转换它:
NM_DATA$DATE <- as.Date(NM_DATA$DATE, format='%Y%m%d')
Run Code Online (Sandbox Code Playgroud)
但是,如果它是数字(而不是字符),我们首先需要强制转换为字符以避免'origin' must be supplied错误.(您可以使用mode(NM_DATA$DATE).检查向量的模式.)
NM_DATA$DATE <- as.Date(as.character(NM_DATA$DATE), format='%Y%m%d')
Run Code Online (Sandbox Code Playgroud)
既然向量是一个Date对象,我们可以用各种方式对它进行格式化(概述?strptime).提取年,月,日数字:
NM_DATA$YEAR <- format(NM_DATA$DATE, '%Y')
NM_DATA$MONTH <- format(NM_DATA$DATE, '%m')
NM_DATA$DAY <- format(NM_DATA$DATE, '%d')
Run Code Online (Sandbox Code Playgroud)
如果您想要月份名称,则可以使用%B(或%b缩写月份名称),例如:
NM_DATA$MONTHNAME <- format(NM_DATA$DATE, '%B')
Run Code Online (Sandbox Code Playgroud)