我似乎无法将我的数据从csv转换为适当的日期类。我使用的是1033个日期的csv。我已将CSV保存为“YYYYMMDD”格式
下面是导入csv的代码(看起来可以工作):
bd <- read.csv('birthdaysExample.csv',
header = FALSE,
sep = ',')
我可以在R Studio中看到数据:
> head(bd)
V1
1 20141125
2 20140608
3 20140912
4 20140526
5 20140220
6 20140619
然而,当我尝试转换日期时,我收到错误:“Strptime(bd,format =“%Y%m%d”)中的错误:输入字符串太长。"
下面是我的代码:
better_bds <- strptime(bd,format='%Y%m%d')
我甚至试着检查和验证我所有的日期实际上都有8个字符:
> table(nchar(bd$V1) != 8 | nchar(bd$V1) != 8)
FALSE
1033
所以我不知道下一步该往哪里走,如果有人能给我指出正确的方向,我将不胜感激!
4条答案
按热度按时间4uqofj5v1#
问题是
bd
是一个单列的data.frame,而strptime
需要一个字符向量。如果你不给strptime
传递一个字符向量,它会调用as.character(x)
。调用as.character(bd)
会产生一些您可能没有预料到的结果。在将
bd
的字符向量列传递给strptime
之前,需要将其子集化(正如Hugh在他的评论中建议的那样)。另外,由于您似乎没有任何实际的时间信息,我建议您使用Date类。这将防止您遇到任何潜在的时区问题。
iibxawm42#
你的实际日期格式必须与strptime函数中的日期格式同步。示例如下:
如果您尝试不同,它将显示错误:
希望这能帮上忙。
3hvapo4f3#
你可以试试
用你输入的数据,我得到
scyqe7ek4#
以下是
dplyr
方法:1.重新创建示例
1.回答