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

时间:2015-04-29 23:36:24

标签: r export-to-csv

我的数据框有一列A,字符串形式为

> df$A
[1] "2-60", "2-61", "2-62", "2-63" etc

我使用write.csv保存了表格,但是当我用Excel打开它时,列A显示为日期格式:

Feb-60
Feb-61
Feb-62
Feb-63
etc

任何人都知道我该怎么做才能避免这种情况?

我调整了write.csv的参数,但没有任何效果,我似乎无法在Stack Overflow中找到一个帮助解决这个问题的例子。

2 个答案:

答案 0 :(得分:7)

正如评论中所说,这是一种excel行为,而不是R'。这不能被停用:

  

Microsoft Excel已预编程,可以更轻松地输入日期。对于   例如,12/2更改为12月2日。这对你来说非常令人沮丧   输入您不希望更改为日期的内容。不幸   无法关闭此功能。但是有办法解决它。

Microsoft Office Article

根据文章提出的第一个建议的方法是没有用的,因为它依赖于更改单元格格式,但是当你在excel中打开.csv文件时已经太晚了(它已经转换为表示日期的整数) 。

然而,有一个有用的提示:

  

如果您只输入几个号码,则可以停止Excel   输入以下内容将其更改为日期:

     
      
  • 输入数字之前的撇号('),例如'11 -53或'1/47。按下后,单元格中不会显示撇号   输入
  •   

因此,您可以使用

将数据显示为原始数据
vec <- c("2-60", "2-61", "2-62", "2-63")
vec <- paste0("'", vec)

请记住,如果你在R中再次读取它们,那么值仍会有撇号,所以你可能不得不使用

vec <- sub("'", "", vec)

这可能不太理想,但至少可行。

另一种方法是将文本作为excel公式包含在=" "中,但结果相同并使用更多字符。

答案 1 :(得分:1)

另一种解决方案 - 有点单调乏味,在Excel中使用导入文本文件,单击对话框,在文本导入向导的第3步中,您可以选择设置列数据格式,使用&#34 ;文本&#34;对于具有&#34; 2-60&#34;,&#34; 2-61&#34;,&#34; 2-62&#34;,&#34; 2-63&#34;的列。如果您使用常规(默认),Excel会尝试智能并为您转换答案。

相关问题