我有一个看起来像这样的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")
我希望一切都保持原样但MARCH3
和SEPT9
成为3月3日和9月9日。我已经尝试了Excel中的所有内容:按日期,文本,自定义格式化...无效。 3-Mar将转换为42066和9-Sep至42256.实际上,a
是一个相当大的表,所以这甚至不能手动完成。有没有办法强制a[,1]
以便Excel忽略其格式?
答案 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月的基因名称...