Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >读取R中的CSV,但保留字符行名

读取R中的CSV,但保留字符行名
EN

Stack Overflow用户
提问于 2018-02-17 17:17:34
回答 2查看 1.1K关注 0票数 0

我正在使用流行的R库"quantmod“,当我将文件读到csv时,我不知道如何保留字符行名。

例如,我将有一些数据如下:

代码语言:javascript
运行
AI代码解释
复制
ROW NAME       VALUE
1970-05-08     .05
1970-08-01     .05
1970-12-10     .06
...            ---

当我使用

代码语言:javascript
运行
AI代码解释
复制
write.csv(MyData,'MyData.csv', row.names = T)

输出如下所示:

代码语言:javascript
运行
AI代码解释
复制
Column One     Column Two
1               .05
2               .05
3               .06
...             ---

如何保留字符行名?即csv中的值1如何实际读取为1970-05-08?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-20 09:32:02

您必须知道,quantmod返回xts-objects。因此,第一列(日期)是索引。比方说,要将xts-objects写入csv-file,最简单的方法是使用write.zoo函数。

代码语言:javascript
运行
AI代码解释
复制
getSymbols('AAPL',from='2018-01-01)
write.zoo(AAPL,'aapl.csv',sep=',',quote=FALSE)

quotes=FALSE删除列名两边的引号。

票数 1
EN

Stack Overflow用户

发布于 2018-02-17 19:48:47

概述

在将数据框导出为.csv文件之前,您需要将所需的字符行名存储为数据框中的新列。

要避免冗余列,请在write.csv()函数中设置row.names = FALSE。将数据框重新导入r时,将read.csv()中的row.names设置为表示所需行名称值的列的名称。

可重现的例子

在这里,行名是一个字符,代表movie in which each Star Wars character dies

代码语言:javascript
运行
AI代码解释
复制
# create data
df <-
  data.frame( ID = 1:3
              , Name = c( "Anakin", "Han", "Luke" )
              , stringsAsFactors = FALSE
  )

# create row names
rownames( df ) <- c( "Episode_VI", "Episode_VII", "Episode_VIII" )

# view data
df
#              ID   Name
# Episode_VI    1 Anakin
# Episode_VII   2    Han
# Episode_VIII  3   Luke

# store rownames in new column
df$row.names <- rownames( df )

# export data as CSV
write.csv( x = df
           , row.names = FALSE
           , file = "Star_Wars_data.csv"
)

# import data from CSV
df.csv <- read.csv( file = "Star_Wars_data.csv"
                , header = TRUE
                , row.names = "row.names"
                , stringsAsFactors = FALSE
)

# view data from CSV
df.csv
#              ID   Name
# Episode_VI    1 Anakin
# Episode_VII   2    Han
# Episode_VIII  3   Luke

# end of script #

另存为RDS文件

此外,还可以使用saveRDS()将数据框导出为.rds文件。此方法不要求您将行名存储为列;相反,在使用readRDS()导入r时,它只需保存即可。

代码语言:javascript
运行
AI代码解释
复制
# create data
df <-
  data.frame( ID = 1:3
              , Name = c( "Anakin", "Han", "Luke" )
              , stringsAsFactors = FALSE
  )

# create row names
rownames( df ) <- c( "Episode_VI", "Episode_VII", "Episode_VIII" )

# view data
df
#              ID   Name
# Episode_VI    1 Anakin
# Episode_VII   2    Han
# Episode_VIII  3   Luke

# Export as RDS file
saveRDS( object = df
         , file = "Star_Wars_data.rds"
)

# view data
readRDS( file = "Star_Wars_data.rds" )
#              ID   Name
# Episode_VI    1 Anakin
# Episode_VII   2    Han
# Episode_VIII  3   Luke

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

https://stackoverflow.com/questions/48843863

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档