转换日期R数据框中的不同字符串类型
convert different string types in dates R data frame
我有一个包含两列的凌乱数据框:
DF<-data.frame(x=seq(100,105,1),y=c("3/25/2014 12:56","3/25/2014 14:18","3/25/2014 14:18","3/25/2014 14:18","3/25/2014 14:18","2014-03-25 14:19:08.043"))
x y
1 100 3/25/2014 12:56
2 101 3/25/2014 14:18
3 102 3/25/2014 14:18
4 103 3/25/2014 14:18
5 104 3/25/2014 14:18
6 105 2014-03-25 14:19:08.043
我想将 y 列转换为 R 日期以便:
x y
1 100 2014-03-25
2 101 2014-03-25
3 102 2014-03-25
4 103 2014-03-25
5 104 2014-03-25
6 105 2014-03-25
为此,我可以对前 5 个元素使用 Lubridate 中的函数 parse_date_time
as.Date(parse_date_time(DF$y[1:5], orders="mdy hm"))
最后一个直接函数as.Date:
as.Date(DF$y[6], orders="mdy hm")
我可以通过制作一个 for 和 if 循环来做到这一点,但是,我正在寻找一个更优雅的矢量化解决方案。
你有什么想法吗?
谢谢
您可以像这样传递多个订单来尝试 parse_date_time
:
parse_date_time(DF$y, orders = c("mdy HM", "ymd HMS"))
你给的每个条目应该 return 适当的值。
我会随时使用套餐:
library(anytime)
anydate(DF$y)
#[1] "2014-03-25" "2014-03-25" "2014-03-25" "2014-03-25" "2014-03-25" "2014-03-25"
我有一个包含两列的凌乱数据框:
DF<-data.frame(x=seq(100,105,1),y=c("3/25/2014 12:56","3/25/2014 14:18","3/25/2014 14:18","3/25/2014 14:18","3/25/2014 14:18","2014-03-25 14:19:08.043"))
x y
1 100 3/25/2014 12:56
2 101 3/25/2014 14:18
3 102 3/25/2014 14:18
4 103 3/25/2014 14:18
5 104 3/25/2014 14:18
6 105 2014-03-25 14:19:08.043
我想将 y 列转换为 R 日期以便:
x y
1 100 2014-03-25
2 101 2014-03-25
3 102 2014-03-25
4 103 2014-03-25
5 104 2014-03-25
6 105 2014-03-25
为此,我可以对前 5 个元素使用 Lubridate 中的函数 parse_date_time
as.Date(parse_date_time(DF$y[1:5], orders="mdy hm"))
最后一个直接函数as.Date:
as.Date(DF$y[6], orders="mdy hm")
我可以通过制作一个 for 和 if 循环来做到这一点,但是,我正在寻找一个更优雅的矢量化解决方案。
你有什么想法吗?
谢谢
您可以像这样传递多个订单来尝试 parse_date_time
:
parse_date_time(DF$y, orders = c("mdy HM", "ymd HMS"))
你给的每个条目应该 return 适当的值。
我会随时使用套餐:
library(anytime)
anydate(DF$y)
#[1] "2014-03-25" "2014-03-25" "2014-03-25" "2014-03-25" "2014-03-25" "2014-03-25"