首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将包含多个数据的行写入csv r

将包含多个数据的行写入csv r
EN

Stack Overflow用户
提问于 2018-08-14 19:10:50
回答 3查看 41关注 0票数 1

所以我的数据帧看起来像这样

代码语言:javascript
代码运行次数:0
运行
复制
> df
 file_name        some_value               
 test.csv         12815415,5712365,12815383,13700109,12806007 

 write.csv(df,file="E:/output.csv",row.names = F)

生成的csv表如下所示

代码语言:javascript
代码运行次数:0
运行
复制
file_name        some_value   
test.csv         1.281545E+38

似乎只有some_value中的第一个条目被写入csv,但是E+38从哪里来呢?有什么建议可以解决这个问题,以便在列some_value下有5个条目

代码语言:javascript
代码运行次数:0
运行
复制
> 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")
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-14 19:18:00

要解决此问题,您可以用单引号开始该字段。

代码语言:javascript
代码运行次数:0
运行
复制
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将该值视为文本。

票数 2
EN

Stack Overflow用户

发布于 2018-08-14 19:30:19

至少使用一个字符作为some_values的第一个元素,例如s12815415、5712365、12815383、13700109、12806007。然后导出,将some_values视为文本并提取整个字符串

票数 0
EN

Stack Overflow用户

发布于 2018-08-14 20:00:45

由于MS excel的默认视觉属性(在windows中),您将获得这些值。在记事本中打开.CSV文件(右键单击并使用记事本打开)以获得准确的输出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51840065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档