2017-11-05 3 views
0

날짜 열 (날짜, POSIXct, POSIXt)을 데이터 프레임의 문자 열로 변환하고 싶습니다. 예를 들어,이 데이터 프레임이 있습니다.날짜를 데이터 프레임의 문자로 변환

df <- data.frame(date = Sys.Date(), time = Sys.time(), val = 1) 

날짜 열을 문자 열로 쉽게 변환 할 수 있습니다.

df$date <- as.character(df$date) 
df$time <- as.character(df$time) 

날짜 열을 하나씩 지정하지 않고 전체를 변환 할 수있는 방법이 있습니까? lapply 또는 sapply을 사용하여 어떻게 변환 할 수 있습니까?

+0

u는 3 개의 날짜 열이있는 경우 3 개의 열을 모두 한 번에 변환하려고합니다. 참된? – Salman

+0

'df [] <- lapply (df, as.character)'를 시도하십시오. 사각형 괄호는'df'의 모양을 유지하기위한 것입니다. –

+0

예, 정확하게. 내가 열을 수동으로 지정하지 않고 한 번에 그들을 모두 변환하고 싶습니다. –

답변

2

먼저 데이터 유형을 혼합하여보다 완벽한 예를 만드십시오. 그런 다음 어떤 것이 클래스 Date 또는 POSIXt 인 지 결정하십시오. 마지막으로 관심있는 것을 수정하십시오. 같은 POSIXctPOSIXlt 모두 다른 날짜/시간 클래스 클래스 POSIXt에서 상속

df <- data.frame(date = Sys.Date(), time = Sys.time(), x = 1, A = "Test") 

inx <- sapply(df, function(x) inherits(x, "Date") || inherits(x, "POSIXt")) 
df[inx] <- lapply(df[inx], as.character) 
str(df) 
#'data.frame': 1 obs. of 4 variables: 
# $ date: chr "2017-11-05" 
# $ time: chr "2017-11-05 08:30:19" 
# $ x : num 1 
# $ A : Factor w/ 1 level "Test": 1 

주 그래서 당신은이 후자를 테스트해야합니다.

+0

감사합니다. 그것은 매우 도움이된다. –

관련 문제