2017-03-19 115 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" 
相關問題