2017-11-21 2 views
-1

폴더에 일련의 xlsx 파일이 있습니다. 파일 이름은 모두 Filename (date) .xlsx입니다. 아래 코드를 사용하여 파일의 데이터 프레임 목록을 생성합니다. 그런 다음 조작을 위해 하나의 큰 데이터 프레임으로 컴파일합니다. 각 데이터 프레임에 열을 추가하고 각 파일의 날짜가되도록하고 싶습니다. 어떤 도움R 도움말 여러 xlsx 파일을 목록으로 가져온 다음 파일 이름의 일부를 사용하여 날짜를 열로 가져옵니다.

답변

0

에 대한

data.files 
data.files <- list.files(pattern = ".xlsx") 
data.list <- lapply(data.files, function(x){ 
    y <- read_xlsx(x,skip = 1)}) 
data.list <- lapply(data.list, function(x) { 
    x[c(1:(nrow(x)-3)),]})      
#combind lists to one data frame 
data.df <- bind_rows(data.list) 

덕분에 나는 개인적으로 이것에 대한 data.table 패키지에서 rbindlist을 사랑 해요.

library(data.table) 

data.files <- list.files(pattern = ".xlsx") 

# extract the date from each filename 
data.dates <- sub("^Filename(.*)\\.xlsx$", "\\1", data.files) 

# import the data, removing the last 4 rows 
data.list <- lapply(data.files, function(x) { 
     res <- read_xlsx(x, skip = 1) 
     res <- res[ seq_len(nrow(res)-3), ] 
     return(res) 
}) 

# set the list item names as the dates 
data.list <- setNames(data.list, data.dates) 

# combine the data, keeping the dates as a column 
data.df <- rbindlist(data.list, idcol = "date") 

EDIT (테스트하지 코드, 그래서 제가 여기에 오타 또는 코드 오류를 넣어 한 경우 알려 주시기 바랍니다) : bind_rows().id 매개 변수가 같은 당신이 선호하는 경우에 당신이 그 막대기 수 있도록이 보인다 . 위와 같은 방법으로 idcol 대신 bind_rows 대신 .id을 사용하면 rbindlist이됩니다.

+0

data.list 단계를 입력하여 데이터를 가져오고 맨 아래 행을 제거 할 때. res <- 결과 [seq_len (nrow (res) -3)] FUN (X [[i]], ...) 오류 : '결과'개체를 찾을 수 없습니다. –

+0

죄송합니다. 오타입니다. 지금 고칠 것입니다. – rosscova

+0

그래, 내 대답을 편집하려했으나 너무 늦었습니다. 어제 깨닫고 답변으로 표시 한 이유를 고쳤습니다. 감사합니다. –

관련 문제