2014-05-19 3 views
0

동일한 차원과 열 이름을 가진 두 개의 데이터 프레임이 있습니다. 현재 두 문자로 저장된 날짜를 날짜로 변환하고 싶습니다. for 루프를 사용하여 자동화하는 방법이 있습니까? 나는 비록 다음 스크립트와 유사한 뭔가 :변수를 날짜 형식으로 변환하는 루프

Error in i$Date : $ operator is invalid for atomic vectors 

나는이에 i 개체를 사용할 수 있다고 생각하지 않습니다 : 이것은 실제로 작동하고 다음과 같은 오류 메시지를 반환하지 않습니다

names <- c("old.df", "new.df") 

# use Date format 
for (i in names) { 
    i$Date <- as.Date(i$Date, "%d/%m/%Y") 
    i$Datetime <- as.Date(i$Datetime, "%d/%m/%Y %h:%m:%s.000") 
    i$ClickDatetime <- as.Date(i$ClickDatetime, "%d/%m/%Y %h:%m:%s.000") 
} 

방법. 같은 목표를 달성하기 위해 일반적으로 사용하는 좋은 해결 방법이 비슷한 조건인지 궁금합니다.

답변

0

정확함, R은 i을 문자열로 표시하고 문자열로 명명 된 데이터 프레임이 아니기 때문에 올바르게 작동하지 않습니다. 이 같은 것이 작동해야합니다.

df_list <- list(old_df, new_df) 

# use Date format 
for (df in df_list) { 
    df["Date"] <- as.Date(df["Date"], "%d/%m/%Y") 
    df["Datetime"] <- as.Date(df["Datetime"], "%d/%m/%Y %h:%m:%s.000") 
    df["ClickDatetime"] <- as.Date(df["ClickDatetime"], "%d/%m/%Y %h:%m:%s.000") 
} 

old_df <- df_list[[1]] 
new_df <- df_list[[2]] 

이렇게하는 방법은 다양합니다. 두 개의 데이터 프레임 만 있으면 각 데이터 프레임을 개별적으로 수행하는 것이 좋은 옵션 일 수 있습니다. 동일한 열이있는 많은 데이터 프레임을 사용하면 rbind (어떤 행이 어떤 df에 속하는지 알려주는 식별자 열을 넣음)을 사용하여 스택을 쌓을 수 있습니다. 변경 사항을 적용한 다음 다시 분할 할 수 있습니다. 또는 목록에 넣고 lapply과 함께 사용할 수있는 함수를 작성하십시오.

관련 문제