San*_*yal 2 r date concatenation
我有三列用于日,月和年,我想用它来制作一个日期列
> dt
mon day year
1: NA NA NA
2: NA NA NA
3: NA NA NA
4: NA NA NA
5: NA NA NA
6: NA NA NA
7: NA NA NA
8: 10 10 2017
9: NA NA NA
10: 4 4 2018
11: NA NA NA
12: NA NA NA
13: NA NA NA
14: NA NA NA
15: NA NA NA
16: NA NA NA
>
Run Code Online (Sandbox Code Playgroud)
我使用下面的代码,它给出了奇怪的结果:
> as.Date(paste(dt$mon,dt$day,dt$year,sep="-"),format = "%m-%d-%y")
[1] NA NA NA NA NA NA NA
[8] "2020-10-10" NA "2020-04-04" NA NA NA NA
[15] NA
Run Code Online (Sandbox Code Playgroud)
我也试过以下:
library("lubridate")
with(dt, ymd(sprintf('%04d%02d%02d', year, mon, day)))
Run Code Online (Sandbox Code Playgroud)
我收到错误:sprintf出错("%04d%02d%02d",年份,星期一,天):格式'%04d'无效; 使用格式%f,%e,%g或%a表示数字对象
请建议这些代码是否有任何问题,或者是否有更好的解决方案可以解决我的问题?
谢谢!
您的年份是4位数格式.
所以你应该使用%Y
as.Date(paste(dt$mon,dt$day,dt$year,sep="-"),format = "%m-%d-%Y")
Run Code Online (Sandbox Code Playgroud)