我有像这样的数据集:
CODE NAME DATE HOUR
1 Ab 01-01-19 1
1 Ab 02-01-19 2
1 Ab 03-01-19 3
1 Ab 04-01-19 4
2 Xy 01-JAN-19 1
2 Xy 02-JAN-19 2
2 Xy 03-JAN-19 3
2 Xy 04-JAN-19 4
实际数据集要大得多。我想将所有DATE转换为01-JAN-19格式。我尝试过:
a <- as.Date(df$DATE, format = "%d-%b-%y")
b <- as.Date(df$DATE, format = "%d-%m-%y")
a[is.na(a)] <- b[!is.na(b)]
df$ <- a
但这需要花费时间并以2019-01-01格式给出结果。即使我尝试过:
df$DATE <- format(as.Date(df$DATE, format = c("%d-%b-%y", "%d-%m-%y")), "%d-%b-%y")
它提供了所需的结果,但它在DATE列中填充了替代的NA值,例如:
CODE NAME DATE HOUR
1 Ab 01-JAN-19 1
1 Ab NA 2
1 Ab 03-JAN-19 3
1 Ab NA 4
2 Xy NA 1
2 Xy 02-JAN-19 2
2 Xy NA 3
2 Xy 04-JAN-19 4
我认为是因为format = c("%d-%b-%y", "%d-%m-%y")
。如何将所有DATE转换为01-JAN-19格式。
怎么样:
df$DATE = format(lubridate::parse_date_time(df$DATE, c('dmy','dby')), '%d-%b-%Y')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句