programing

R에서 Excel로 데이터 내보내기

goodsources 2023. 4. 16. 15:00
반응형

R에서 Excel로 데이터 내보내기

R에서 Excel로 데이터베이스를 내보내기 위해 코드를 작성하고 있습니다.다른 코드에는 다음과 같은 코드를 사용해 보고 있습니다.

write.table(ALBERTA1, "D:/ALBERTA1.txt", sep="\t")
write.csv(ALBERTA1,":\ALBERTA1.csv")
your_filename_in_R = read.csv("ALBERTA1.csv")
your_filename_in_R = read.csv("ALBERTA1.csv")
write.csv(df, file = "ALBERTA1.csv")
your_filename_in_R = read.csv("ALBERTA1.csv")
write.csv(ALBERTA1, "ALBERTA1.csv")
write.table(ALBERTA1, 'clipboard', sep='\t')
write.table(ALBERTA1,"ALBERTA1.txt")
write.table(as.matrix(ALBERTA2),"ALBERTA2.txt")
write.table(as.matrix(vecm.pred$fcst$Alberta_Females[,1]), "vecm.pred$fcst$Alberta_Females[,1].txt")
write.table(as.matrix(foo),"foo.txt")
write.xlsx(ALBERTA2, "/ALBERTA2.xlsx")
write.table(ALBERTA1, "D:/ALBERTA1.txt", sep="\t").

이 포럼의 다른 사용자는 다음과 같이 조언했습니다.

write.csv2(ALBERTA1, "ALBERTA1.csv")
write.table(kt, "D:/kt.txt", sep="\t", row.names=FALSE)

여기에 이미지 설명 입력

위 코드에서 얻은 결과를 사진으로 확인할 수 있습니다.그러나 이 숫자는 다른 행렬과의 덧셈과 같은 추가 연산을 수행하는 데 사용할 수 없습니다.

누군가 이런 문제를 겪어본 적이 있나요?

또 다른 옵션은openxlsx- - - 。에 의존하지 않고 Excel 파일을 읽고, 편집하고, 쓸 수 있습니다.패키지의 설명에서:

openxlsx는 R에서 Excel xlsx 파일을 쓰고 스타일링하는 프로세스를 단순화하고 Java에 대한 의존을 없앱니다.

사용 예:

library(openxlsx)

# read data from an Excel file or Workbook object into a data.frame
df <- read.xlsx('name-of-your-excel-file.xlsx')

# for writing a data.frame or list of data.frames to an xlsx file
write.xlsx(df, 'name-of-your-excel-file.xlsx')

이 두 가지 기본 기능 외에openxlsx패키지에는 Excel 파일을 조작하기 위한 다른 기능이 많이 있습니다.

예를 들어,writeDataTable- Excel 파일에 포맷된 테이블을 만들 수 있습니다.

최근에 사용한 xlsx 패키지는 정상적으로 동작합니다.

library(xlsx)
write.xlsx(x, file, sheetName="Sheet1")

여기서 x는 data.frame 입니다.

writexl, Java 요건 없음:

# install.packages("writexl")
library(writexl)
tempfile <- write_xlsx(iris)

WriteXLS 패키지의 WriteXLS 함수는 Excel에 데이터를 쓸 수 있습니다.

또는 쓰기도 합니다.xlsx 패키지의 xlsx도 동작합니다.

읽기를 사용할 수도 있습니다.ODS 패키지물론, 그런다고 해서.xlsx그러나 Excel은 Open Document Spreadsheet(ODS)/LibreOffice 파일도 읽을 수 있습니다.

require(readODS)

tmp = file.path(tempdir(), 'iris.ods')
write_ods(iris, tmp)

다른 방법을 제안할 수 있다면 데이터 프레임도 정기적으로 저장할 수 있습니다.csv데이터 프레임을 Import하려면 Excel 내의 "get data" 기능을 사용합니다.이것은 저에게 있어서 큰 도움이 되었고, R에 있는 엑셀 패키지는 신경 쓰지 않아도 됩니다.

여기에서는, 데이터 프레임으로부터의 데이터를 다른 ID에 의해서 엑셀 파일에, 제1 레벨 ID에 관련 붙여진 다른 ID에 의해서 다른 탭(시트)에 쓰는 방법이 있다.데이터 프레임이 다음과 같이 되어 있다고 상상해 보세요.email_address하나의 열로 표시되지만 각 전자 메일에는 모든 데이터를 포함하는 여러 개의 '서브ID'가 있습니다.

data <- tibble(id = c(1,2,3,4,5,6,7,8,9), email_address = c(rep('aaa@aaa.com',3), rep('bbb@bbb.com', 3), rep('ccc@ccc.com', 3)))

그래서 아이디1,2,3와 관련지어지다aaa@aaa.com다음 코드는 데이터를 이메일로 분할한 후1,2,3다른 탭으로 이동합니다.중요한 것은 세팅하는 것이다.append = True를 쓸 때.xlsx파일.


temp_dir <- tempdir()

for(i in unique(data$email_address)){
    
  data %>% 
    filter(email_address == i) %>% 
    arrange(id) -> subset_data
  
  for(j in unique(subset_data$id)){
    write.xlsx(subset_data %>% filter(id == j), 
      file = str_c(temp_dir,"/your_filename_", str_extract(i, pattern = "\\b[A-Za-z0- 
       9._%+-]+"),'_', Sys.Date(), '.xlsx'), 
      sheetName = as.character(j), 
      append = TRUE)}
 
  }

regex는 이메일 주소에서 이름을 가져와 파일 이름에 넣습니다.

누가 이걸 유용하게 찾길 바라.나는 이것을 하는 더 우아한 방법이 있다고 확신하지만 효과가 있다.

에서는, 의 파일을, 「이메일 주소」의 .data.frame. 는 두 루프에 [j]

  send.mail(from = "sender@sender.com",
            to = i,
          subject = paste("Your report for", str_extract(i, pattern = "\\b[A-Za-z0-9._%+-]+"), 'on', Sys.Date()),
          body = "Your email body",
          authenticate = TRUE,
          smtp = list(host.name = "XXX", port = XXX,
                      user.name = Sys.getenv("XXX"), passwd = Sys.getenv("XXX")),
          attach.files = str_c(temp_dir, "/your_filename_", str_extract(i, pattern = "\\b[A-Za-z0-9._%+-]+"),'_', Sys.Date(), '.xlsx'))


기능 등 여러 패키지를 시험해 보았습니다.

install.packages ("prettyR") 

library (prettyR)

delimit.table (Corrvar,"Name the csv.csv") ## Corrvar회귀 분석을 실행하기 위해 스케일링된 변수에 대한 출력의 개체 이름입니다.

그러나 다른 분석의 출력(점유 모델 선택 출력)에 대해 동일한 코드를 시도했지만 작동하지 않았습니다.그리고 많은 시도와 탐험 끝에 나는:

  • R(+)Ctrlc에서 출력을 복사했습니다.
  • 엑셀 시트로 CtrlV붙였습니다(+).
  • 데이터가 있는 첫 번째 열을 선택합니다.
  • "Data" vignette에서 "Text to column"을 클릭합니다.

  • 구분 옵션을 선택하고 다음을 클릭합니다.

  • "구분자"의 공백 상자에 체크 표시를 하고 다음을 클릭합니다.

  • [ Final ](종료)를 클릭합니다.

이제 출력은 Excel로 쉽게 조작할 수 있는 형태로 되어 있어야 합니다.따라서 가장 고급스러운 옵션은 아니지만 다른 방법으로 데이터를 탐색하고 싶다면 이 방법이 효과적입니다.

추신. 만약 엑셀의 라벨이 정확하지 않다면 스페인어 엑셀에서 라벨을 번역하고 있기 때문입니다.

언급URL : https://stackoverflow.com/questions/19414605/export-data-from-r-to-excel

반응형