字符串在.csv中转换为日期。甚至无法转换回Excel(R)

时间:2015-02-13 23:36:40

标签: r excel csv

我有一个看起来像这样的data.frame:

a=data.frame(c("MARCH3","SEPT9","XYZ","ABC","NNN"),c(1,2,3,4,5))
> a
  c..MARCH3....SEPT9....XYZ....ABC....NNN.. c.1..2..3..4..5.
1                                    MARCH3                1
2                                     SEPT9                2
3                                       XYZ                3
4                                       ABC                4
5                                       NNN                5

写入csv:write.csv(a,"test.csv")

我希望一切都保持原样但MARCH3SEPT9成为3月3日和9月9日。我已经尝试了Excel中的所有内容:按日期,文本,自定义格式化...无效。 3-Mar将转换为42066和9-Sep至42256.实际上,a是一个相当大的表,所以这甚至不能手动完成。有没有办法强制a[,1]以便Excel忽略其格式?

3 个答案:

答案 0 :(得分:2)

防止Excel自动格式化的最佳方法可能是将数据存储为excel文件:

library(xlsx)
write.xlsx(a, "test.xlsx") 

答案 1 :(得分:0)

您最好的选择可能是更改文件扩展名(例如,将其设置为" .txt"或者#34; .dat"或者类似的东西)。在Excel中打开此类文件时,将打开文本导入向导。指定文件以逗号分隔,然后确保从" General"更改相应的列。 to" Text"。

作为示例:查看问题中的数据,您的CSV文件可能看起来像

,,,,MARCH3,,,,1
,,,,SEPT9,,,,2
,,,,XYZ,,,,3
,,,,ABC,,,,4
,,,,NNN,,,,5

如果我使用" .csv"保存此文件扩展并在Excel中打开它我得到:

            3-Mar               1
            9-Sep               2
            XYZ                 3
            ABC                 4
            NNN                 5

如您所述,日期值已更改。当我将文件扩展名更改为" .dat"时,不对文件进行其他更改,并在Excel中打开它,我将使用文本导入向导。我告诉Excel该文件是" Delimited",选择"逗号"作为分隔符,以及带有" MARCH3"的列。和" SEPT9"值我将列数据类型更改为"文本" (而不是"将军")。单击向导上的“完成”按钮后,我在电子表格中获得了以下数据:

            MARCH3              1
            SEPT9               2
            XYZ                 3
            ABC                 4
            NNN                 5

我尝试将MARCH3和SEPT9值放在双引号中以查看是否会说服Excel将这些值视为文本,但Excel仍将这些单元格转换为日期。

分享并享受。

答案 2 :(得分:0)

我的解决方案是在所有基因名称后附加一个分号。添加的字符使excel确信此列是文本而不是日期。您以后可以找到并替换分号,但是大多数程序(例如perseus)将允许您忽略分号之后的所有内容,因此它并不总是问题...

df $ Gene.name <-paste(df $ Gene.name,“;”,sep =“”)

我会感兴趣的是,有人会欺骗到9月,3月的基因名称...