所以我的数据帧看起来像这样
> df
file_name some_value
test.csv 12815415,5712365,12815383,13700109,12806007
write.csv(df,file="E:/output.csv",row.names = F)
生成的csv表如下所示
file_name some_value
test.csv 1.281545E+38
似乎只有some_value
中的第一个条目被写入csv,但是E+38从哪里来呢?有什么建议可以解决这个问题,以便在列some_value
下有5个条目
> dput(df)
structure(list(file_name = structure(1L, .Label = "test.csv", class =
"factor"),
some_value = structure(1L, .Label =
"12815415,5712365,12815383,13700109,12806007", class = "factor")), .Names =
c("file_name",
"some_value"), row.names = c(NA, -1L), class = "data.frame")
发布于 2018-08-14 11:18:00
要解决此问题,您可以用单引号开始该字段。
df$some_value <- paste0("'",df$some_value) #Add a single quote to the beginning to indicate to Excel that it is a text field
请注意,E+38实际上是一个Excel问题,而不是R问题。因为逗号分隔值是在csv文件中的单个字段中输入的,所以看起来像E+38。如果您在Excel中打开它,Excel会将其视为逗号格式化的单个数字(例如,将数千与数百分隔开),因此科学记数法中的数字有38个零。如果您在文本编辑器中打开csv文件,我认为它不会是这样的。
如果我查看Notepad++中的文件(没有撇号),我会看到
如果我在Excel中查看相同的文件,我会看到:
Excel将some_value解释为单个数字,将逗号解释为格式,并以科学记数法显示该数字。
通过在数字前加上单引号,可以强制Excel将该值视为文本。
发布于 2018-08-14 11:30:19
至少使用一个字符作为some_values的第一个元素,例如s12815415、5712365、12815383、13700109、12806007。然后导出,将some_values视为文本并提取整个字符串
发布于 2018-08-14 12:00:45
由于MS excel的默认视觉属性(在windows中),您将获得这些值。在记事本中打开.CSV文件(右键单击并使用记事本打开)以获得准确的输出。
https://stackoverflow.com/questions/51840065
复制相似问题