데스크탑에있는 폴더에서 여러 .csv 파일을 읽고 이러한 모든 .csv 파일을 하나의 data.frame으로 병합하고 각 파일의 이름이 포함 된 열을 만들고 싶습니다.
나는 시도했다 :
my.path <- "C:/Users/JB/Desktop/RawFiles/"
filenames <- paste(my.path, list.files(path=my.path), sep="/")
my.df <- do.call(rbind, lapply(filenames, function(x) cbind(read.csv(x), name=strsplit(x,'\\.')[[1]][1])))
그러나 my.dt$name
.csv의 파일 이름은 포함하지 않습니다. 오히려 파일의 위치를 포함합니다. 예를 들어 다음을 head(my.dt, 3)
생성합니다.
name
1 C:/Users/JB/Desktop/RawFiles//Analysis_01122016
2 C:/Users/JB/Desktop/RawFiles//Analysis_01122016
3 C:/Users/JB/Desktop/RawFiles//Analysis_01122016
my.dt$name
file.name 만 생성 하도록 어떻게 편집 할 수 있습니까? 내 예상 결과는 다음과 같습니다.
name
1 Analysis_01122016
2 Analysis_01122016
3 Analysis_01122016
감사!
첫째, 경로에 변수를 사용할 필요가 없습니다. 의 full.names = TRUE
인수 list.files
는 당신을 위해 그것을 할 것입니다.
파일 이름과 확장자 만 원하는 경우 다음을 사용할 수 있습니다.
basename("full/path/to/myfile.csv")
확장 프로그램도 제거하려면 :
tools::file_path_sans_ext(basename("full/path/to/myfile.csv"))
따라서 코드로 다음과 같이 할 수 있습니다.
filenames <- list.files(path = "C:/Users/JB/Desktop/RawFiles", full.names = TRUE)
my.df <- do.call(rbind,
lapply(filenames, function(x)
cbind(read.csv(x),
name = tools::file_path_sans_ext(basename(x)))))
그러나 plyr::ldply
또는 같은 도구를 사용하는 더 깨끗한 솔루션 data.table
이 있으며 올바른 검색을 통해 다른 답변에서 예제를 찾을 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다