使用write.csv时转换为日期的字符

使用write.csv时转换为日期的字符,r,export-to-csv,R,Export To Csv,我的数据框有一列a,其中包含字符形式的字符串 > df$A [1] "2-60", "2-61", "2-62", "2-63" etc 我使用write.csv保存了该表,但当我使用Excel打开它时,列的格式显示为日期: Feb-60 Feb-61 Feb-62 Feb-63 etc 有人知道我能做些什么来避免这种情况吗 我调整了write.csv的参数,但没有任何效果,我似乎在堆栈溢出中找不到有助于解决此问题的示例。如评论中所述,这是excel行为,而不是R行为。这是无法停用的:

我的数据框有一列a,其中包含字符形式的字符串

> df$A
[1] "2-60", "2-61", "2-62", "2-63" etc
我使用write.csv保存了该表,但当我使用Excel打开它时,列的格式显示为日期:

Feb-60
Feb-61
Feb-62
Feb-63
etc
有人知道我能做些什么来避免这种情况吗


我调整了write.csv的参数,但没有任何效果,我似乎在堆栈溢出中找不到有助于解决此问题的示例。

如评论中所述,这是excel行为,而不是R行为。这是无法停用的:

Microsoft Excel经过预编程,可以更轻松地输入日期。对于 例如,12/2改为12月2日。当您 输入您不希望更改为日期的内容。不幸的是 无法关闭此功能。但是有办法绕过它

根据文章,第一种建议的解决方法没有帮助,因为它依赖于更改单元格格式,但在excel中打开.csv文件(它已经转换为表示日期的整数)时就太晚了

但是,有一个有用的提示:

如果只需输入几个数字,则可以停止Excel 通过输入以下内容将其更改为日期:

  • 在输入数字之前加上撇号('),如“11-53”或“1/47”。按下后,单元格中不会显示撇号 进入
因此,您可以使用将数据显示为原始数据

vec <- c("2-60", "2-61", "2-62", "2-63")
vec <- paste0("'", vec)

vec另一种解决方案-有点繁琐,使用Excel中的导入文本文件,单击对话框,在文本导入向导的第3步(共3步)中,您可以选择设置列数据格式,对包含“2-60”、“2-61”、“2-62”、“2-63”的列使用“Text”。如果使用“常规”(默认设置),Excel会尝试变得聪明,并为您转换答案

请显示您用来编写文件的代码。听起来好像Excel正在进行转换,而不是R。
write.csv(df,file=“analysis.csv”,quote=TRUE)
我怀疑这是Excel的错,但我希望用R做些什么,所以Excel不会这样做。如果您将该文件读回R,格式是什么?@nrussell,好问题。如果我把“analysis.csv”读回R,我得到的是原始格式,而不是日期。我仔细检查了Excel选项,但找不到任何方法来停用这个恼人的自动格式设置。谢谢你的帮助。无论谁是Excel团队中的天才,谁做出了这一非可选的设计决策,都应该被拍到脑袋的一侧。有趣的是,他们没有简单地创建一个复选框来禁用它,而是写了一篇文章说,如果你只有几个数字,这可能会非常令人沮丧,并给出一些有用的想法谢谢,这是最适合我的解决方案,因为我需要Excel中的输出。
vec <- sub("'", "", vec)