2017-03-19 89 views
0

我想在同一个表中从另一个类型的日期列创建一个新的类型日期列。从另一个类型的日期创建一个新的类型日期列

我的代码是这样的:

A <- c(1,2) 
B <- c(as.POSIXct("2014-04-28 03:01:09"),NA) 
C <- c(as.POSIXct(NA), as.POSIXct("2014-05-17 03:17:00")) 
df <- data.frame(A,B,C) 
df$D <- ifelse(A == 1, B, C)  

然后d的值是1398668469,1400311020,而不是日期。

我怎样才能使D也是约会的类型?

+0

1),我们可以看到一个什么样的日期,一个看起来像实际输出? 2)你是否反对使用图书馆来处理日期?我强烈建议在R中使用['lubridate'](https://cran.r-project.org/web/packages/lubridate/lubridate.pdf)包来处理日期 – TaylorV

+0

@TaylorV我想复制的日期就像“2014-05-25 12:06:18”,但新列的输出是“1401019580”,类型是数字。我可以使用新的库,但我是R的新手,甚至不知道哪个软件包可以帮助我。 –

+0

@ zx8754访问$ A有许多值,这就是为什么我使用for循环的原因。我刚刚尝试过ifelse,新列的类型仍然是数字,但我希望它是日期。你知道该怎么做吗? –

回答

0

无论是恢复类ifelse后或使用dplyr::if_else()

# using ifelse and restore class 
df$D <- ifelse(A == 1, B, C) 
class(df$D) <- class(df$B) 

# or use dplyr if_else 
library(dplyr) 
df <- df %>% mutate(D_v1 = if_else(A == 1, B, C)) 

str(df) 
# 'data.frame': 2 obs. of 5 variables: 
# $ A : num 1 2 
# $ B : POSIXct, format: "2014-04-28 03:01:09" NA 
# $ C : POSIXct, format: NA "2014-05-17 03:17:00" 
# $ D : POSIXct, format: "2014-04-28 03:01:09" "2014-05-17 03:17:00" 
# $ D_v1: POSIXct, format: "2014-04-28 03:01:09" "2014-05-17 03:17:00" 
相关问题