2012-11-26 3 views
1

데이터 세트 목록이 있습니다. 각 데이터 세트에는 한 달 동안의 데이터가 포함되어 있습니다. 수년 동안의 데이터 범위, 따라서 나는 매년 12 데이터 세트가 있습니다. 이 데이터는 원래 Excel 파일이었습니다. 나는 이전에, 즉, this advice 다음, .csv로 변환, 모든 파일을 가져온 :데이터 프레임 목록 내에 새로운 데이터 프레임 열을 동적으로 만듭니다.

datalist <- list() 
files <- list.files(pattern="\\.csv$") 

for(file in files) { 
    stem <- gsub("\\.csv$","",file) 
    datalist[[stem]] <- read.csv(file) 
} 

그래서 내 모든 데이터 세트를 포함 datalist라는 이름의 목록을 끝낸다.

내 문제는 파일 이름에 실제 데이터가 수집 된 실제 월 및 연도가 포함되어 있으므로 각 데이터 집합 이름에서 이름과 연도를 가져 와서 그 두 개의 새로운 열 dataframe : "Year"와 "Month". 내가 dataframe 이름으로 유지

모든 파일 이름,이 구조를 따르 [개월] _ [] _ [... 다른 텍스트] "August_2012_foo_bar"예를 들어있다. 그래서 저는 정규 표현을 사용하여 그 달을 먼저 잡을 것이라고 생각했습니다. 내 코드 스텁은 다음과 같습니다 밑줄, 즉 달의 전에 어떤

for(dataset in names(datalists)) { 
    name <- dataset 
    month <- strapply(name,"^([^_]*).*$") 
    ...? 
} 

정규 표현식 "^([^_]*).*$" 잡고. 데이터 세트의 새 열에 잡은 달을 할당해야 할 때 막혔습니다. 행운없이 assigncbind을 사용해 보았습니다.

결국 나는 이러한 모든 데이터 집합을 하나로 병합하고 싶습니다.

도움 주셔서 감사합니다.

답변

1

새 열을 참조하고 할당 할 수 있습니다. R이 열을 만듭니다. 추가

하려고하면 "월"라는 이름의 새 열을 생성하고에 month 변수를 할당합니다

datalist[[stem]]$Month <- month 
... 

. R은 data.frame의 기존 길이와 일치하는 데 필요한만큼 여러 번 할당 할 변수를 정중하게 반복합니다.

for(file in files) { 
    stem <- gsub("\\.csv$","",file) 
    datalist[[stem]] <- read.csv(file) 

    #parse out the month and year here 
    ... 

    #assign to new columns 
    datalist[[stem]]$Month <- month 
    datalist[[stem]]$Year <- year 
} 
+0

완벽한 :

그래서 전체 루프는 같을 것이다! 고마워요! 나는 데이터 프레임을'strapply'에 직접 전달할 수 있다는 것을 몰랐습니다. 그래서 두 번째 루프를 시도했지만 데이터 프레임 이름이 엉망입니다! – Wilco