簡體   English   中英

Function write.table() 在導出到 excel 時將我的字符列轉換為數字。 我怎樣才能防止這種情況?

[英]Function write.table() is converting my character column to numeric when exporting to excel. How can I prevent this?

我有一個 dataframe 以類似的方式:

  Material  c1  c2  c3  c4  c5  c6
1   0111    30  44  24  25  52  27
2   0112    19  70  93  23  68  100
3   1124    22  NA  79  18  133 143
4   2389    79  NA  NA  81  60  NA
5   3480    57  8   95  62  NA  90
6   0134    350 60  50  302 44  4

在這里我強制作為字符類型,但在我真正的 dataframe 中它已經是。

df['Material']=as.character(df['Material'])

sapply(df,mode)

write.table(df, paste(".\\exports\\", "dummy.csv", sep = ""), sep = ";", dec = ",",row.names=F)

問題是,當我導出到 excel 時,我的 Material 列變成了數字,我丟失了開頭的 0,它是材料代碼描述的一部分。 我的行已排序,我希望將它們放在原始 position 中。 有沒有辦法防止這種情況發生? 導出時將我的材料列保持為字符?

如果您想復制它,我嘗試創建一個虛擬版本:

df <- data.frame(Material = c('0111','0112','1124','2389','3480'),
                    actual_202009 = c(30,19,22,79,57),
                    actual_202010 = c(44,70,NA,NA,8),
                    actual_202011 = c(24,93,79,NA,95), 
                    pred_202009 = c(25,23,18,81,62),
                    pred_202010 = c(52,68,133,60,NA),
                    pred_202011 = c(27,100,143,NA,90))

如評論中所述:

這行得通。

library(openxlsx)
write.xlsx(df, file = "dummy.xlsx")

盡管 csv 中的數據在 Material 列周圍有引號,但 excel 喜歡為您考慮而不尊重字符引號。 現在您可以將 libreoffice 與 calc 一起使用。 這將打開文本導入選項,您可以在其中告訴它第一列是文本,並且它將保留 Material 列的正確格式。

但最簡單的就是使用上面的代碼。

暫無
暫無

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

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