sourcecode

R의 데이터 프레임에서 이미 존재하는 Excel 시트로 데이터를 추가하려면 어떻게 해야 합니까?

copyscript 2023. 8. 27. 09:46
반응형

R의 데이터 프레임에서 이미 존재하는 Excel 시트로 데이터를 추가하려면 어떻게 해야 합니까?

저는 R에서 수십 개의 데이터 프레임을 만들었고 엑셀 파일의 한 시트에 모두 추가하고 싶습니다.

다음은 답을 찾기 위해 본 두 페이지입니다(저는 10개의 평판이 없기 때문에 방문한 네 개의 웹 페이지 URL을 모두 붙여넣을 수 없습니다).

R 패키지를 사용하여 Excel 파일에 데이터 쓰기 xlsx 작성자는 "addDataFrame 함수에 startRow 및 startCol 인수를 사용하여 시트의 특정 시작 위치에 데이터 프레임을 추가할 수도 있습니다."라고 말합니다.제안된 코드는 다음과 같습니다.

workbook.sheets workbook.test addDataFrame(x = sample.dataframe, sheet = workbook.test,
   row.names = FALSE, startColumn = 4) # write data to sheet starting on line 1, column 4
saveWorkbook(workbook.sheets, "test.excelfile.xlsx") # and of course you need to save it.

이 제안을 바탕으로 RStudio에서 제가 시도한 것은 다음과 같습니다.

addDataFrame(df_fl1, sheet = "AllData2.xlsx", startRow = 712)

R의 출력은 다음과 같습니다.시트 $getWorkbook의 오류: $ 연산자가 원자 벡터에 대해 잘못되었습니다.

이 페이지도 사용해 보았습니다.

Excel 파일 읽기 및 R로 가져오기 자습서 "그러나 이미 존재하는 파일에 데이터 프레임을 쓰려면 다음 명령을 실행할 수 있습니다."

write.xlsx(df, 
           "<name and extension of your existing file>", 
           sheetName="Data Frame"
           append=TRUE)
write.xlsx(df_fl3, "AllData2.xlsx", sheetName="Salinity1", append=TRUE)

제가 이 코드를 시도해봤는데 이미 시트에 있던 데이터를 덮어썼습니다.데이터 프레임의 데이터를 Excel 시트에 추가하려면 어떻게 해야 합니까?

기존 Excel 워크시트에 추가하는 것은 다소 번거롭습니다.대신 모든 Excel 데이터 파일을 R로 읽고 R 내에서 결합한 다음 단일 결합 데이터 프레임을 새 Excel 파일에 기록합니다(또는 Excel 워크북에 데이터가 필요하지 않은 경우 csv 파일에 기록).쉬운 방법과 어려운 방법은 아래 코드를 참조하십시오.

방법:을 운쉬방: 모작업수에서 합니다.R합니다.

예를 들어 모든 Excel 데이터 파일이 현재 작업 디렉터리에 있고 각 Excel 파일의 첫 번째 워크시트에 데이터가 포함되어 있으면 다음을 수행할 수 있습니다.

library(xlsx)

# Get file names
file.names = list.files(pattern="xlsx$")

# Read them into a list
df.list = lapply(file.names, read.xlsx, sheetIndex=1, header=TRUE)

그런 다음 이러한 데이터를 단일 데이터 프레임으로 결합하고 디스크에 씁니다.

df = do.call(rbind, df.list)

write.xlsx(df, "combinedData.xlsx", sheetName="data", row.names=FALSE)

어려운 방법: 기존 Excel 워크시트에 연속 데이터 프레임 추가

Excel에 쓸 데이터 프레임 목록을 만듭니다(위에서 설명한 바와 같이 실제 사용 사례에서는 R의 목록으로 데이터 파일을 읽습니다).기본 제공되는 기능을 사용합니다.iris여기서 설명할 데이터 프레임:

df.list = split(iris, iris$Species)

각 데이터 프레임을 단일 Excel 워크시트에 쓰려면 먼저 Excel 워크시트와 데이터를 쓸 워크시트를 만듭니다.

wb = createWorkbook()
sheet = createSheet(wb, "data")

# Add the first data frame
addDataFrame(df.list[[1]], sheet=sheet, row.names=FALSE, startRow=1)

이제 루프를 사용하여 나머지 모든 데이터 프레임을 추가합니다.증분startRow다음 데이터 프레임이 올바른 위치에 기록되도록 매번 설정합니다.

startRow = nrow(df.list[[1]]) + 2    

for (i in 2:length(df.list)) {

  addDataFrame(df.list[[i]], sheet=sheet, row.names=FALSE, col.names=FALSE, 
               startRow=startRow)

  startRow = startRow + nrow(df.list[[i]])

  }

워크북 저장:

saveWorkbook(wb, "combinedData.xlsx")

addDataFrameExcel 워크시트의 다양한 부분에 있는 다양한 요약 표를 레이아웃하고 프레젠테이션에 적합한 모양으로 만들려는 경우 유용합니다.하지만 원시 데이터를 하나의 데이터 파일로 결합하는 것이라면 R에서 모든 작업을 수행한 다음 결합된 데이터 프레임을 마지막에 Excel 워크시트(또는 csv 파일)에 쓰는 것이 훨씬 더 쉽다고 생각합니다.

언급한 원래 오류를 해결하려면 다음을 수행합니다.

시트 $getWorkbook의 오류: $ 연산자가 원자 벡터에 대해 잘못되었습니다.

사용해 볼 수 있습니다.

wb <- loadWorkbook("<name and extension of your existing file>")
addDataFrame(df,getSheets(wb)$<sheetname>, startRow = 712)
saveWorkbook(wb, <filename>)

언급URL : https://stackoverflow.com/questions/34643888/how-do-i-append-data-from-a-data-frame-in-r-to-an-excel-sheet-that-already-exist

반응형