2017-04-17 3 views
1

도움이 필요합니다. 난 date_time 열 값을 txt_col 열의 일치하는 값과 NA 같은 일치하지 않는 값을 기반으로 새 열로 복사하려고합니다.데이터 프레임의 ifelse 열과 일치하는 날짜 시간 열 값

df$new_col <- ifelse(df$txt_col == "apple", df$date_time, NA) 

그러나, 내가 대신 날짜 - 시간의, 새 열에 숫자를 얻을 :

new_col 
1477962000 
1451755980 
1451755980 
1451755980 

str(df)보고, 열 date_timePOSIXct 여기 내 코드입니다. as.numericPOSIXct을 변환하려고 시도했지만 작동하지 않았습니다. 내가 성취하려는 일을하는보다 우아한 방법이 있다면, 당신이 공유한다면 크게 감사 할 것입니다. 고맙습니다.

+0

1970 년 1 월 1 일 이후의 초 수입니다. 모든 것을'as.POSIXct()'로 감싸면 괜찮을 것이다. – thelatemail

+0

다시 포장 할 때 시간대를 포함하는 것을 잊지 마십시오. tz가 중간 스트림을 변경할 때 처리가 매우 흥미 롭습니다 .-) – r2evans

+0

as.POSIXct (1477962000, origin = "1970-01-01 00:00 : 00 ")'나를 위해 일합니다. – r2evans

답변

4

dplyr보다 엄격한 함수 if_else은 true 및 false 구성 요소의 클래스를 모두 확인합니다. NA 값에 대한 클래스를 명시 적으로 제공하면이 유형이 더 안전합니다.

library(dplyr) 
df <- data.frame(txt_col = c("apple", "apple", "orange"), 
       date_time = as.POSIXct(c("2017-01-01", "2017-01-02", "2017-01-03"))) 

# use dplyr::if_else instead, and provide explicit class 
df$new_col <- if_else(df$txt_col == "apple", df$date_time, as.POSIXct(NA)) 

df 
# txt_col date_time new_col 
# 1 apple 2017-01-01 2017-01-01 
# 2 apple 2017-01-02 2017-01-02 
# 3 orange 2017-01-03  <NA> 
관련 문제