簡體   English   中英

如何將 data.frame 列類型導出到 XLSX

[英]How to export data.frame column type to XLSX

我有一個數據集,其中包含 5 列“CHR”類型和接下來的 116 列“NUM”類型。

基於數字列,我正在創建另外 64 個計算列,這些列是我需要的其他基礎的一列的除法或減法。 我面臨的問題是所有這些計算的列都存儲為列類型 data.frame。

我嘗試檢查數據,我可以看到它是數字值以及錯誤值(如 NaN 或 INF 等)的混合,因為在某些地方,數字會被 0 整除。

在嘗試使用“Write_Xlsx”導出它時,它會完整地導出文件,但是計算列的值在 excel 文件中顯示為空白。 我不確定為什么並且似乎無法使其工作。

到目前為止,我已經嘗試了以下代碼來轉換 data.frames 列,但似乎都拋出錯誤或將所有數值轉換為 NA。

DFT$`VALMTHSPLY7-22` <- as.numeric((DFT$`VALMTHSPLY7-22`))
DFT$`VALMTHSPLY6-22` <- as.numeric(gsub(",", ".", DFT$`VALMTHSPLY6-22`))
as.data.frame(lapply(DFT, as.numeric))

代表 package (v2.0.1) 於 2022 年 8 月 16 日創建

我已經嘗試了更多,但似乎在我的實驗堆下,我似乎無法找到它們。

我在這里有兩個問題:-

  1. 如何將整個數據集導出到 excel 而不會丟失計算列中的數值?
  2. 如果沒有任何效果,我們是否可以在 R 中編寫類似“iferror”類型的 function 以在進行計算時抑制錯誤值,因為我有限的理解可能是 ZE1E1D3D40573127E9EE0480CAF1283D6 將混合值視為數據框。

期待在這里提供幫助。 下面是我的計算列的代碼(其中一部分,因為復制所有 64 行不會產生任何額外的東西)

DFT$VALGR19 <- round((DFT[, 7]/DFT[, 6] - 1) * 100, 2)
DFT$MSVALGR22 <- round((DFT[, 68] - DFT[, 67]), 2)

代表 package (v2.0.1) 於 2022 年 8 月 16 日創建

編輯

這是用於寫入 Excel 的代碼,

write_xlsx(DFT, "C:\\Users\\I0510906\\Desktop\\Files\\RAuto\\Region-Data-MS-GR.xlsx")

代表 package (v2.0.1) 於 2022 年 8 月 16 日創建

這是我用於創建列的計算代碼:

DFT$VALGR19 <- round((DFT[, 7]/DFT[, 6] - 1) * 100, 2)

代表 package (v2.0.1) 於 2022 年 8 月 16 日創建

當我檢查兩個計算列的結構時,它們返回為:-'data.frame':1126 obs。 1 個變量:

當我檢查 Table() 屬性時,我可以看到它是數值、無限和 NaN 值的混合。

當我將它們導出到 excel 時,列名被導出到 excel 但單元格為空白。

為了克服這個問題,我使用下面的代碼來轉換列(因為總共有 64 個,我不知道如何為它們編寫循環):-

DFT$VALGR19 <- sapply(DFT$VALGR19, function(x) as.numeric(as.character(x)))

代表 package (v2.0.1) 於 2022 年 8 月 16 日創建

這會將列轉換為 NUMERIC。

使用相同的導出代碼,現在我可以導出文件並導出所有值。 在 excel 中,我運行一個簡單的搜索並將 INF 和 NaN 替換為空白。

然而,我仍在摸不着頭腦的兩件事是:-

  1. 為什么計算的列是data.frame
  2. 如何將此方法循環用於 64 列。 現在我已經編寫了 64 行代碼來單獨轉換我知道不是最好的方法的每一列。

請讓我知道是否需要更多內容,並且很樂意分享。

這可能是一種解決方法,正如您的問題所述,問題是您的 r dataframe 中的 null 和 NaN 值不會顯示在您的 xlsx 中。 以下應該有效:

DFT <- format(DFT)
write_xlsx(DFT, "C:\\Users\\I0510906\\Desktop\\Files\\RAuto\\Region-Data-MS-GR.xlsx")

format() 是一個 function '用於漂亮的打印' 將 dataframe 中的所有值轉換為字符。 這意味着當您想要進行計算時,您必須將它們更改回 xlsx 文件中的數字。 但這應該適用於將 dataframe 中的所有值打印到 xlsx 文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM