여러 워크 시트가있는 큰 Excel 스프레드 시트를 R의 .CSV 파일로 변환하는 가장 간단한 방법은 무엇입니까?Excel 스프레드 시트를 .csv 파일로 저장 하시겠습니까?
필자는 XLConnect와 XLSX를 테스트 한 결과 내 Excel 시트가 충돌을 일으킨다는 것을 알았습니다. 그래서 저는 특별히 XLConnect 또는 XLSX 패키지를 사용하지 않는 솔루션을 찾고 있습니다.
여러 워크 시트가있는 큰 Excel 스프레드 시트를 R의 .CSV 파일로 변환하는 가장 간단한 방법은 무엇입니까?Excel 스프레드 시트를 .csv 파일로 저장 하시겠습니까?
필자는 XLConnect와 XLSX를 테스트 한 결과 내 Excel 시트가 충돌을 일으킨다는 것을 알았습니다. 그래서 저는 특별히 XLConnect 또는 XLSX 패키지를 사용하지 않는 솔루션을 찾고 있습니다.
http://rwiki.sciviews.org/doku.php?id=tips:data-io:ms_windows
편집 : 펄을 실행하는 경우
, 당신은 GDATA의 현재 버전
require(gdata)
installXLSXsupport() #now the example from help(read.xls)
# load the third worksheet, skipping the first two non-data lines...
if('XLSX' %in% xlsFormats()) # if XLSX is supported..
data <- read.xls(exampleFile2007, sheet="Sheet with initial text", skip=2)
data
#-----------------------
X X.1 D E. F G Factor
1 NA FirstRow 1 NA NA NA Red
2 NA SecondRow 2 1 NA NA Green
3 NA ThirdRow 3 2 1 NA Red
4 NA FourthRow 4 3 2 1 Black
#------------------------
write.csv(data)
이 Mac에서 수행되고 필요 다음 read.xlsx 옵션을 해결하기 항상이 오류가 발생하기 때문에 installXLSXsupport() 단계에서 우연히 만났습니다. 이번에는 Terminal 커맨드 라인에서 Perl을 시작했고, 내 개인 구성을 설정하고, 대륙에서 CPAN 미러를 정의한 후 성공을 거두었으며, 펄을 계속 실행했습니다.
큰 리소스이지만, 사용한 옵션과 경험에 대한 개인적인 논평을 포함하면 답이 더 좋을 것이라고 생각합니다. 그런 목록에서 어디서부터 시작해야할지 알기가 어렵습니다. –
귀하가 귀하의 의견에 언급했듯이, 그러한 제안에 대한 세부 사항이 없기 때문에 질문자 상황에 맞는 대답을 작성하는 것이 어려울 것입니다. 모호한 질문에 답하고 세부 사항을 분명히 밝혀내는 일반적인 응답이 필요한 것 같았습니다. –
DWin 링크를 제공해 주셔서 감사합니다. 이 질문은 실제로 XLConnect 및 XLSX 패키지에서 특히 큰 .xlsx 파일을 읽을 수없는 문제와 관련이 있습니다. 스프레드 시트를 수동으로 CSV 파일로 변환하면 R 코드가 제대로 작동합니다. 따라서 프로세스를 자동화하려면 큰 .xlsx 파일을 읽고 .csv 파일로 변환 할 수있는 R 패키지를 사용해야합니다. 참고 문헌을 읽은 후에는 gdata에게 기회를 줄 것입니다. "gdata"패키지를 사용하여 .xlsx 파일을 변환하는 방법을 알 수 있습니까? – AME
여기에 모든 시트를 작성하는 루프입니다 : readxl 패키지를 기반으로
require(gdata)
## install support for xlsx files
installXLSXsupport()
excelFile <- ("/full/path/to/excelFile.xlsx")
## note that the perl scripts that gdata uses do not cope well will tilde expansion
## on *nix machines. So use the full path.
numSheets <- sheetCount(excelFile, verbose=TRUE)
for (i in 1:numSheets) {
mySheet <- read.xls(excelFile, sheet=i)
write.csv(mySheet, file=paste(i, "csv", sep="."), row.names=FALSE)
}
업데이트 대답.
library("readxl")
#function to read all sheets of a workbook
read_excel_allsheets <- function(filename) {
sheets <- readxl::excel_sheets(filename)
x <- lapply(sheets, function(X) readxl::read_excel(filename, sheet = X))
names(x) <- sheets
x
}
sheetnames <- read_excel_allsheets("excelFile.xlsx")
names(sheetnames)
간단하고 좋습니다. 'read_excel (파일) %> % data.table :: fwrite (파일 출력)' – Rob
왜 Excel로 CSV로 변환하지 않습니까? – Stedy
@Stedy - 아마도 Excel 스프레드 시트는 AME가 수정할 수는 없지만 여전히 작업해야하는 자동화 된 주기적 프로세스의 일부로 생성됩니다. 또는 AME에는 실제로 이러한 엑셀 시트가 5,000 개가 있고 각 시트에서 여러 시트를 추출해야하지만 이미 파일을 반복하는 방법을 알고 있습니다. 나는 수동 변환이 악몽이되는 수많은 시나리오를 생각할 수있다. –
@MattParker - 좋은 지적 – Stedy